0

我的config/routes.rb文件中有以下路线:

resources :employees do
  get 'dashboard'
  get 'orientation'
end

employees指处理标准 RESTful 操作的常规资源。dashboard并且orientation是我目前所说的作用于Employee实例的“自定义操作”。如果我的术语混淆了,dashboard并且orientation真的是别的东西,我深表歉意。这些自定义操作对 URL 的响应如下:

http://myhost/employees/1/dashboard

即它们是“成员”行为,非常类似于showedit

无论如何,这一切都很好。诸如showon等常规操作通过EmployeesController获取关联的 ID 。但是,用这个当前的结构,不得不改用。这并不太难处理,但确实会导致一些额外的代码复杂性,因为我期望的常规 s不适用于这两个操作。Employeeparams[:id]dashboardorientationparams[:employee_id]before_filterparams[:id]

如何让路由系统以与等params[:id]相同的方式填充这些自定义操作的 ID show?我已经尝试了各种方法member而不是get这些操作,但还没有任何东西可以按照我想要的方式工作。这个应用程序是使用 Ruby on Rails 3.2 构建的。

4

2 回答 2

2

这可能会帮助您:

resources :employees do
  member do
    get 'dashboard'
    get 'orientation'
  end
end

以上将生成如下所示的路由,然后您将能够在您的EmployeesController中使用params [:id]。

dashboard_employee   GET    /employees/:id/dashboard(.:format)          employees#dashboard
orientation_employee GET    /employees/:id/orientation(.:format)        employees#orientation
于 2013-08-06T17:32:22.723 回答
0

我没有测试过这个例子,但你可以明确地设置资源丰富的路径。

像这样的东西可能会起作用:

resources :employees, path: '/employees/:id' do
  get 'dashboard', path: '/dashboard'
  get 'orientation', path: '/orientation'
end
于 2013-08-06T17:31:38.880 回答