我了解rails 3中的资源和路径路由,但我不知道有没有办法同时拥有两条路由?我尝试这条路线,但它不适合我,这是路线:
resources :roles, only: [:index, :create, :show, :update]
get '/roles/:id' => 'roles#available_users'
我们如何路由以使用这两条路线?
非常感谢
答案 0 :(得分:1)
<强>路线强>
您所要求的是无法完成的,因为您将使用相同的“路线”来执行不同的控制器操作:
#config/routes.rb
resources :roles, only: [:index, :create, :show, :update] #-> domain.com/roles/:id - roles#show
如果您为domain.com/roles/:id
创建了另一条路线,Rails将会在routes
文件中找到第一条路线
-
解决问题的方法可能是以下几点:
#config/routes.rb
resources :roles, except: [:edit, :destroy] do
get :available_users # -> domain.com/roles/:id/available_users
end
这将带您进入roles#available_users
操作,使您能够加载所需的视图(显示特定角色的用户)
有关更明确的解释,我建议您查看Rails路由系统的nested_resources
部分
答案 1 :(得分:0)
如果我理解正确你想要这样的事情:
resources :roles, only: [:index, :create, :update] do
get '/roles/:id' => 'roles#available_users'
end
正确? 只需添加&#34; do&#34;在结束之后,在自定义路线之后结束。
编辑:显然我错了。 ;)你能做的是:
resources :roles, only: [:index, :create, :show, :update] do
get '/roles/:id/available' => 'roles#available_users'
end