在routes.rb
中,
资源:项目
给出以下路线
/projects/
/projects/:id
在使用嵌套资源时
resources :projects do
resources :photos
end
它给出了以下路线
/projects/
/projects/:id
/projects/:project_id/photos
/projects/:project_id/photos/:id
这给了我问题,因为我必须编写特定于 Controller 的 before_filter 在 params[:id]
和 params[:project_id]
之间进行选择以执行 Project。查找(参数[:project_id] || 参数[:id])
有什么方法可以更改所有路线的路线,使其具有 :project_id
本身?
/projects/
**/projects/:project_id**
/projects/:project_id/photos
/projects/:project_id/photos/:id
最佳答案
另一种方法是定义方法,在ApplicationController中通过:project_id找到当前项目
def current_project
@current_project ||= Project.find params[:project_id]
end
并在ProjectController中重新定义这个方法
def current_project
@current_project ||= Project.find params[:id]
end
然后,您可以在所有 Controller 的过滤器中使用 current_project
关于ruby-on-rails - Rails 3 - 如何更改参数 :id in resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9828103/