Как мне разрешить эти конфликтующие маршруты Rails? - PullRequest
4 голосов
/ 09 июня 2011

У меня есть запись в моем rout.rb, которая выглядит так:

resources :baskets, :shallow => true, :only => :show
  resource :owned, :only => [:create, :destroy]
end

get '/baskets/owned', :to => 'owners#index'

Это создает маршруты, которые выглядят как:

basket        GET    /baskets/:id(.:format)
baskets_owned GET    /baskets/owned(.:format)
# ...

Но теперь, когда я звоню / корзины / владелец, я получаю это:

Started GET "/baskets/owned" for 10.0.1.2 at 2011-06-09 10:31:33 -0400
  Processing by BasketsController#show as JSON
  Parameters: {"id"=>"owned"}

Какой самый идиоматический способ разрешить этот конфликт маршрутизации?

1 Ответ

6 голосов
/ 09 июня 2011

Rails сопоставляет маршруты, начиная с первого определенного и продолжая до тех пор, пока не найдет совпадение;используется первый соответствующий маршрут, а все остальные игнорируются.

Чтобы решить вашу проблему, нужно поставить маршрут get '/baskets/owned' перед маршрутом resources.

...