【发布时间】:2017-04-24 14:05:18
【问题描述】:
在我的应用中,硬币可能属于也可能不属于网络。因此,我的routes.rb 中有以下内容:
resources :coins
resources :networks do
resources :coins
end
您可以通过硬币#follow 关注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
但是我在访问coins/coinname时遇到这个错误,例如:
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.
我不清楚正确的解决方案是什么。我想将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 资源我可以做得更好
【问题讨论】:
标签: ruby-on-rails routing ruby-on-rails-5