2010-08-27 4 views
3

Вышеупомянутый не работает для ресурса, как и следовало ожидать, поскольку корзина является ресурсом (то есть единственным), а не ресурсами, поэтому нет концепции коллекции, все должно быть ограничено текущим_узлом. В этом случае пользователь has_one Basket.Как добавить настраиваемый маршрут к ресурсу singleton?

Однако я хотел бы указать свой маршрут без необходимости прибегать к добавив еще одну строку в маршрутах, например:

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

Возможно ли это?

Конечно, мой другой вариант - добавить контрольный контролер.

+0

Я часто задавался вопросом то же самое, и мне всегда приходилось прибегать к написанию руководства по названию маршрута, как вы упомянули выше, хороший Q! – brad

ответ

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 

Таким образом, вы будете иметь возможность для охвата корзины пользователю, который проверяет. URL будет в конечном итоге выглядит так:

/users/5/basket/checkout 

Вы также получите хорошо сформулированное названный маршрут «checkout_user_basket».

Смежные вопросы