我正在创建一条路线,其中应该有一个像http://mysite/cars/1/similar/
这样的网址,这样可以让所有车辆都与具有指定ID的车辆相似(在这种情况下为1)
我已经看到你可以使用语法
在routes.rb文件中创建rails成员路由resources :cars do
member do
get :similar
end
end
我也可以做类似
的事情match 'cars/:id/similar' => 'cars#similar', :via => "get
这两种语法有什么区别
答案 0 :(得分:8)
这两种方法并不相同。
第一种方法产生similar_car
辅助方法。第二种方法没有。
如果您打算执行
之类的操作,帮助方法很重要= link_to "Similar", similar_car_path(@car)
为了使它们等效,您必须提供:as
选项:
get "cars/:id/similar" => "cars#similar", :as => "similar_car"
答案 1 :(得分:7)
一个在默认资源路由声明中统一,IMO更容易找到。另一个不是,这可能导致错别字等。不是巨大的交易,但对于RESTful操作,我宁愿使用资源机制。
您也可以使用单行版本,我更喜欢单行版本:
resources :cars do
get :similar, :on => :member
end
Meagar是正确的,我忘了匹配表格不会创建帮助方法。