Jef*_*rey 4 routes ruby-on-rails
我正在创建一个应该有类似URL的路径http://mysite/cars/1/similar/,这样可以使所有汽车都与具有指定ID的汽车类似(在这种情况下为1)
我已经看到你可以使用语法在routes.rb文件中创建rails成员路由
resources :cars do
member do
get :similar
end
end
Run Code Online (Sandbox Code Playgroud)
我也可以这样做
match 'cars/:id/similar' => 'cars#similar', :via => "get
Run Code Online (Sandbox Code Playgroud)
这两种语法有什么区别
这两种方法并不相同.
第一种方法产生一个similar_car辅助方法.第二种方法没有.
如果您打算执行类似的操作,辅助方法很重要
= link_to "Similar", similar_car_path(@car)
Run Code Online (Sandbox Code Playgroud)
为了使它们等效,您必须提供一个:as选项:
get "cars/:id/similar" => "cars#similar", :as => "similar_car"
Run Code Online (Sandbox Code Playgroud)
一个在默认资源路由声明中统一,IMO更容易找到.另一个不是,这可能会导致错别字等.这不是一个大问题,但对于RESTful操作,我宁愿使用资源机制.
您也可以使用单行版本,我更喜欢单行版本:
resources :cars do
get :similar, :on => :member
end
Run Code Online (Sandbox Code Playgroud)
Meagar是正确的,我忘了匹配表格不会创建帮助方法.
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |