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

解决这种路由冲突的最惯用的方法是什么?

最佳答案

Rails 从第一个定义的路由开始匹配路由,直到找到匹配项;使用第一个匹配的路由,忽略所有其他路由。

解决您的问题的方法是将 get '/baskets/owned' 路由放在 resources 路由之前。

10-08 04:30