4

请你能解释一下这段代码是做什么的吗?

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

完整的代码来自实用程序编程一书,但它没有解释为什么我们使用该代码,“: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'

谢谢

4

1 回答 1

4

通过:on => :member意味着您正在处理数据库中的特定记录,在本例中为产品。所以路由生成的url是

/products/:id/who_bought

这意味着您想要获取 id 为 :id 的产品并处理 who_bought 操作。对方 ,:on => :collection期望该操作适用于产品列表,因此 url 看起来像

/products/who_bought

如果您将成员更改为集合。您可以看到该路线不需要 :id 传递,因为它不希望您处理单个记录。

于 2013-02-18T00:37:33.627 回答