这个rails代码有什么作用? :on => :会员

时间:2013-02-18 00:33:15

标签: ruby-on-rails

请您解释一下这段代码的用途是什么?

resources :products do
 get :who_bought, :on => :member
end

代码完成来自书籍pragmatig编程,但它没有解释我们使用该代码的原因,“:on =>:member”“

Depot::Application.routes.draw do
  resources :orders



resources :line_items
 post 'line_items/decrease'


resources :carts


get "store/index"

resources :products do
   get :who_bought, :on => :member
end

root :to => 'store#index', :as => 'store'

感谢

1 个答案:

答案 0 :(得分:3)

传递:on => :member意味着您正在处理数据库中的特定记录,在本例中为产品。所以该路线生成的网址是

/products/:id/who_bought

表示您希望获取id为id的产品并处理who_bought操作。对应的:on => :collection期望该操作在产品列表上工作,因此网址将如下所示

/products/who_bought

如果您将成员更改为集合。你可以看到路由不需要传递:id,因为它不希望你在一条记录上工作。