rails成员路线

时间:2012-08-23 01:33:34

标签: ruby-on-rails routes

我正在创建一条路线,其中应该有一个像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

这两种语法有什么区别

2 个答案:

答案 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是正确的,我忘了匹配表格不会创建帮助方法。