请您解释一下这段代码的用途是什么?
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'
感谢
答案 0 :(得分:3)
传递:on => :member
意味着您正在处理数据库中的特定记录,在本例中为产品。所以该路线生成的网址是
/products/:id/who_bought
表示您希望获取id为id的产品并处理who_bought操作。对应的:on => :collection
期望该操作在产品列表上工作,因此网址将如下所示
/products/who_bought
如果您将成员更改为集合。你可以看到路由不需要传递:id,因为它不希望你在一条记录上工作。