如何在rails 3中创建路径到资源的路径

时间:2014-08-09 17:02:13

标签: ruby-on-rails

我了解rails 3中的资源和路径路由,但我不知道有没有办法同时拥有两条路由?我尝试这条路线,但它不适合我,这是路线:

resources :roles, only: [:index, :create, :show, :update]
 get '/roles/:id' => 'roles#available_users'

我们如何路由以使用这两条路线?

非常感谢

2 个答案:

答案 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