在我的應用程序中,硬幣可能屬於或可能不屬於網絡。因此,我已在我的routes.rb
如下:將多條路徑匹配到單個控制器動作
resources :coins
resources :networks do
resources :coins
end
您可以通過硬幣#遵循遵循coins
,並通過硬幣#取消關注
這是工作得很好,其通過屬於網絡硬幣Unfollow他們:
match 'networks/:network_id/coins/:id/follow', to: 'coins#follow', via: 'get', :as => :follow_coin
match 'networks/:network_id/coins/:id/unfollow', to: 'coins#unfollow', via: 'get', :as => :unfollow_coin
我想做到這一點還有:
match 'coins/:id/follow', to: 'coins#follow', via: 'get', :as => :follow_coin
match '/coins/:id/unfollow', to: 'coins#unfollow', via: 'get', :as => :unfollow_coin
Invalid route name, already in use: 'follow_coin' You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming.
我對正確的解決辦法是什麼還不清楚:不過我參觀時coins/coinname
,例如收到此錯誤。我想將networks/:network_id/coins/:id/follow
和coins/:id/follow
映射到coins#follow
操作,該操作已經準備好處理屬於網絡的硬幣以及不屬於網絡的硬幣。
我懷疑,即使有:
match 'networks/:network_id/coins/:id/follow', to: 'coins#follow', via: 'get', :as => :follow_coin
我可以做這更好的與networks
資源
謝謝!我認爲這是正確的軌道。我按照你的說法做了,但是當我做了沒有網絡ID的追隨幣路徑(對於不屬於網絡的硬幣),我得到這個路由錯誤:'沒有路由匹配[GET]「/ coins/coinname/follow」 – libovness
我不確定'coinname'來自哪裏。你嘗試過'follow_coin_path(@coin)'(假設你有'@ coin'定義)? – jvillian
「coinname」只是變量。 'coin#show'實際上就是'coin/bitcoin'。當我插入'<%= link_to(「Follow #{@coin.name}」,follow_coin_path(@coin)%>它鏈接到'硬幣/比特幣/跟隨',我得到路線錯誤 – libovness