2015-01-04 28 views
0

鑑於以下途徑文件兩種途徑:爲什麼Rails的產生對同一資源

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

回答

1

因爲你正在申報2次同樣的路線:

  • 第一個在resources :items, :only => [:create, :update, :remove_item]生成此資源:/願望清單/:wishlist_id /項目/ :ID(:格式)
  • put :action => :update第二生成這一個:/願望清單/:wishlis T_ID /項目/ :ITEM_ID(:格式)

你應該只使用其中的1(我建議第一個)。

如果您想了解更多有關路由的信息,您絕對應該繼續使用this page

相關問題