<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ArthurGeek.net &#187; rest</title>
	<atom:link href="http://www.arthurgeek.net/tag/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arthurgeek.net</link>
	<description>Rails, Mac... e Rock'n Roll!</description>
	<lastBuildDate>Sat, 20 Dec 2008 23:25:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cansado daquele &quot;;&quot; horrível em sua url?</title>
		<link>http://www.arthurgeek.net/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url/</link>
		<comments>http://www.arthurgeek.net/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 18:02:00 +0000</pubDate>
		<dc:creator>ArthurGeek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.arthurgeek.net/2007/06/21/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url</guid>
		<description><![CDATA[Uma das coisas que eu mais gosto no Rails, é o rewriting das URLs, nada de ficar usando: dispatch.cgi?controller=people&#38;action=edit&#38;id=1, é simplesmente: /people/edit/1. É algo simples, é algo besta, mas vamos concordar, é muito mais fácil de lembrar e muito mais bonito. não? Porém, com o Rails 1.2 e o suporte à REST eu reclamo toda [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das coisas que eu mais gosto no Rails, é o rewriting das URLs, nada de ficar usando: dispatch.cgi?controller=people&#38;action=edit&#38;id=1, é simplesmente: /people/edit/1. É algo simples, é algo besta, mas vamos concordar, é muito mais fácil de lembrar e muito mais bonito. não? Porém, com o Rails 1.2 e o suporte à <a href="http://pt.wikipedia.org/wiki/REST"><span class="caps">REST</span></a> eu reclamo toda vez que olho para URLs assim:</p>
<pre><code>/people/1;edit
/orders;recent</code></pre>
<p>Que coisa feia esse &#8221;;&#8221;!</p>
<p>Ainda bem que o Rails 2.0 <a href="http://dev.rubyonrails.org/changeset/6485">voltará a usar</a> a boa, velha e bonita &#8221;/&#8221;! :)</p>
<p>Acompanhe como usar este recurso nos seus projetos sem precisar esperar pelo Rails 2.0!</p>
<p>            <span id="more-66"></span></p>
<h3>O patch</h3>
<p>Crie um arquivo chamado <em>fix_resource_routing</em> em /lib com o seguinte conteúdo:</p>
<pre class="rails"><code><span class="kw1">module</span> ActionController
  <span class="kw1">module</span> Resources
    private
    <span class="kw1">def</span> map_collection_actions<span class="br0">&#40;</span>map, resource<span class="br0">&#41;</span>
      resource.<span class="me1">collection_methods</span>.<span class="kw5">each</span> <span class="kw1">do</span> |method, actions|
        actions.<span class="kw5">each</span> <span class="kw1">do</span> |action|
          action_options = action_options_for<span class="br0">&#40;</span>action, resource, method<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{action}_#{resource.plural}&quot;</span>, <span class="st0">&quot;#{resource.path}/#{action}&quot;</span>, action_options<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{action}_#{resource.plural}&quot;</span>, <span class="st0">&quot;#{resource.path}/#{action}.:format&quot;</span>, action_options<span class="br0">&#41;</span>
        <span class="kw1">end</span>
      <span class="kw1">end</span>
    <span class="kw1">end</span>
&nbsp;
    <span class="kw1">def</span> map_new_actions<span class="br0">&#40;</span>map, resource<span class="br0">&#41;</span>
      resource.<span class="me1">new_methods</span>.<span class="kw5">each</span> <span class="kw1">do</span> |method, actions|
        actions.<span class="kw5">each</span> <span class="kw1">do</span> |action|
          action_options = action_options_for<span class="br0">&#40;</span>action, resource, method<span class="br0">&#41;</span>
          <span class="kw1">if</span> action == <span class="re3">:new</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}new_#{resource.singular}&quot;</span>, resource.<span class="me1">new_path</span>, action_options<span class="br0">&#41;</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}new_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.new_path}.:format&quot;</span>, action_options<span class="br0">&#41;</span>
          <span class="kw1">else</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{action}_new_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.new_path}/#{action}&quot;</span>, action_options<span class="br0">&#41;</span>
            map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{action}_new_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.new_path}/#{action}.:format&quot;</span>, action_options<span class="br0">&#41;</span>
          <span class="kw1">end</span>
        <span class="kw1">end</span>
      <span class="kw1">end</span>
    <span class="kw1">end</span>
&nbsp;
    <span class="kw1">def</span> map_member_actions<span class="br0">&#40;</span>map, resource<span class="br0">&#41;</span>
      resource.<span class="me1">member_methods</span>.<span class="kw5">each</span> <span class="kw1">do</span> |method, actions|
        actions.<span class="kw5">each</span> <span class="kw1">do</span> |action|
          action_options = action_options_for<span class="br0">&#40;</span>action, resource, method<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{action}_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.member_path}/#{action}&quot;</span>, action_options<span class="br0">&#41;</span>
          map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{action}_#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.member_path}/#{action}.:format&quot;</span>,action_options<span class="br0">&#41;</span>
        <span class="kw1">end</span>
      <span class="kw1">end</span>
&nbsp;
      show_action_options = action_options_for<span class="br0">&#40;</span><span class="st0">&quot;show&quot;</span>, resource<span class="br0">&#41;</span>
      map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.name_prefix}#{resource.singular}&quot;</span>, resource.<span class="me1">member_path</span>, show_action_options<span class="br0">&#41;</span>
      map.<span class="me1">named_route</span><span class="br0">&#40;</span><span class="st0">&quot;formatted_#{resource.name_prefix}#{resource.singular}&quot;</span>, <span class="st0">&quot;#{resource.member_path}.:format&quot;</span>, show_action_options<span class="br0">&#41;</span>
&nbsp;
      update_action_options = action_options_for<span class="br0">&#40;</span><span class="st0">&quot;update&quot;</span>, resource<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span>resource.<span class="me1">member_path</span>, update_action_options<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.member_path}.:format&quot;</span>, update_action_options<span class="br0">&#41;</span>
&nbsp;
      destroy_action_options = action_options_for<span class="br0">&#40;</span><span class="st0">&quot;destroy&quot;</span>, resource<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span>resource.<span class="me1">member_path</span>, destroy_action_options<span class="br0">&#41;</span>
      map.<span class="me1">connect</span><span class="br0">&#40;</span><span class="st0">&quot;#{resource.member_path}.:format&quot;</span>, destroy_action_options<span class="br0">&#41;</span>
    <span class="kw1">end</span>
&nbsp;
  <span class="kw1">end</span>
<span class="kw1">end</span></code></pre>
<p>Agora, no final do <em>config/environment.rb</em> adicione esta linha:</p>
<pre class="rails"><code><span class="kw3">require</span> <span class="st0">'fix_resource_routing'</span></code></pre>
<p>Pronto! Agora nossas URLs voltaram a ficar bonitas como antes, e quando o Rails 2.0 sair, nossos permalinks não irão mudar!</p>
<p>Vi este patch em: <a href="http://www.stephenbartholomew.co.uk/2007/6/5/using-rails-edge-style-resource-actions-now">Using Rails Edge-style resource actions now</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arthurgeek.net/cansado-daquele-ponto-e-virgula-horrivel-em-sua-url/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
