2014-07-14 77 views
1

我已经从Rails Guides Book中获取了代码片段。我无法理解的是,articles_path如何将页面重定向到两个不同的页面。第一种情况是重定向到文章/ 5,第二种情况是重定向到文章。这个参数是如何改变重定向URL了解ERB中的代码片段

<%= form_for :article ,url: articles_path do |f| %> 
    <p> 
    <%= f.label :title %><br> 
    <%= f.text_field :title %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_area :text %> 
    </p> 

    <p> 
    <%= f.submit %> 
    </p> 
    <%= link_to 'Back', articles_path %> 
<% end %> 

回答

3

在下列情况下

<%= form_for :article ,url: articles_path do |f| %> 

它是一个HTTP POST到articles_path

<%= link_to 'Back', articles_path %> 

它是一个HTTP GET

所以http动词决定了这种情况下的动作。 当你做rake routes,你会看到以下内容

articles GET /articles(.:format)  {:action=>"index", :controller=>"articles"} 
     POST /articles(.:format)  {:action=>"create", :controller=>"articles"} 
+0

感谢您的正确答案。 。我想知道这个rake路由是预定义的,如果我想改变get和post动词的预定义路径到其他地方 – user3726986

+0

rake routes的输出直接基于routes.rb。如果你想在那里指定路由,你通常使用'resources'来处理7个RESTful端点的默认值。否则,你可以使用'get'exit'这样的助手来:'sessions#destroy',如::logout'来做自定义路由。 – ABMagil