4

routes.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)
# ...

しかし、/baskets/owned を呼び出すと、次のようになります。

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"}

このルーティングの競合を解決する最も慣用的な方法は何ですか?

4

1 に答える 1

7

Rails は、最初に定義されたルートから開始し、一致するルートが見つかるまで下に進みます。最初に一致したルートが使用され、その他はすべて無視されます。

問題を解決する方法は、get '/baskets/owned'ルートをルートの前に置くことresourcesです。

于 2011-06-09T15:07:45.867 に答える