2010-08-27 110 views
3
map.resource :basket, :collection => { :checkout => :post } 

以上不適用於資源,正如您所期望的那樣,因爲basket是資源(即單數)而不是資源,所以沒有集合的概念,所有內容都應該限制在current_user。在這種情況下,用戶擁有一籃子。如何將自定義路線添加到單身資源?

不過,我想,而不必訴諸於添加的路由另一行指定一個自定義路徑,例如:

map.checkout 'basket/checkout', :controller => 'baskets', :action => 'checkout' 

這可能嗎?

當然,我的其他選擇是添加一個結帳控制器。

+0

我經常想知道同樣的事情,並且我總是不得不求助於上面提到的手動命名路由,好Q! – brad 2010-08-27 15:51:40

回答

0

只需使用:member選項,而不是:collection

map.resource :basket, :member => {:checkout => :post} 
0

如果籃子是僅限用戶我想使它成爲一個嵌套的資源:

map.resources :users do |users| 
    users.resource :basket, :member => { :checkout => :post } 
end 

... or in Rails 3 ... 

resources :users do 
    resource :basket do 
    post :checkout, :on => :member 
    end 
end 

這樣,你就可以將籃子的範圍限定在正在結帳的用戶。該網址最終會看起來像這樣:

/users/5/basket/checkout 

您還會看到措辭很好的命名路由'checkout_user_basket'。

相關問題