为什么 Rails 为同一资源生成两条路由
Why is Rails generating two routes for the same resource
给定以下路由文件:
Rails.application.routes.draw do
root to: 'visitors#index'
devise_for :users
resources :users do
resources :wishlists, :only => [:create] do
post :action => :create, :on => :collection
resources :items, :only => [:create, :update, :remove_item] do
post :action => :create, :on => :collection
put :action => :update
delete :action => :remove_item
end
end
end
end
Rails 生成的路由包括以下冲突的路由:
PUT /wishlists/:wishlist_id/items/:item_id(.:format) items#update
wishlist_item PUT /wishlists/:wishlist_id/items/:id(.:format) items#update
为什么会生成第一个?我希望只有第二个(包括路径助手)
我正在使用 Rails 4.1.4
因为您在同一条路线上声明了 2 次:
resources :items, :only => [:create, :update, :remove_item]
中的第一个生成此资源:/wishlists/:wishlist_id/items/:id(.:format)
put :action => :update
中的第二个生成了这个:/wishlists/:wishlist_id/items/:item_id(。 :格式)
你应该只使用其中的一个(我推荐第一个)。
如果您想了解更多关于路由的信息,您一定要继续this page。
给定以下路由文件:
Rails.application.routes.draw do
root to: 'visitors#index'
devise_for :users
resources :users do
resources :wishlists, :only => [:create] do
post :action => :create, :on => :collection
resources :items, :only => [:create, :update, :remove_item] do
post :action => :create, :on => :collection
put :action => :update
delete :action => :remove_item
end
end
end
end
Rails 生成的路由包括以下冲突的路由:
PUT /wishlists/:wishlist_id/items/:item_id(.:format) items#update
wishlist_item PUT /wishlists/:wishlist_id/items/:id(.:format) items#update
为什么会生成第一个?我希望只有第二个(包括路径助手)
我正在使用 Rails 4.1.4
因为您在同一条路线上声明了 2 次:
resources :items, :only => [:create, :update, :remove_item]
中的第一个生成此资源:/wishlists/:wishlist_id/items/:id(.:format)put :action => :update
中的第二个生成了这个:/wishlists/:wishlist_id/items/:item_id(。 :格式)
你应该只使用其中的一个(我推荐第一个)。
如果您想了解更多关于路由的信息,您一定要继续this page。