我的config/routes.rb
文件中有以下路由:
resources :employees do
get 'dashboard'
get 'orientation'
end
employees
是指处理标准RESTful操作的常规资源。 dashboard
和orientation
是我目前提到的“自定义操作”,它可以作用于Employee
个实例。如果我的术语混淆了,dashboard
和orientation
真的是别的,我道歉。这些自定义操作响应URL,如下所示:
http://myhost/employees/1/dashboard
即。他们是“会员”行为,非常像show
,edit
等。
无论如何,这一切都运作良好。 show
上的EmployeesController
等常规操作会获取相关Employee
到params[:id]
的ID。但是,对于此当前结构,dashboard
和orientation
必须使用params[:employee_id]
。这不是很难处理,但会导致一些额外的代码复杂性,因为我的常规before_filter
期望params[:id]
不适用于这两个操作。
如何让路由系统以与params[:id]
等相同的方式使用这些自定义操作的ID填充show
?对于这些操作,我尝试了member
而不是get
的各种方法,但没有按照我希望的方式工作。这个应用程序是使用Ruby on Rails 3.2构建的。
答案 0 :(得分: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
答案 1 :(得分:0)
我没有测试过这个例子,但你可以明确地设置资源丰富的路径。
这样的事可能有用:
resources :employees, path: '/employees/:id' do
get 'dashboard', path: '/dashboard'
get 'orientation', path: '/orientation'
end