Как добавить пользовательский маршрут к одноэлементному ресурсу? - PullRequest
3 голосов
/ 27 августа 2010
map.resource  :basket, :collection => { :checkout => :post }

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 29 августа 2010

Если корзина ограничена для пользователя, я сделаю ее вложенным ресурсом:

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.

0 голосов
/ 27 августа 2010

Просто используйте :member вместо :collection:

map.resource :basket, :member => {:checkout => :post}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...