ruby-on-rails - Rails 3 - 如何更改参数 :id in resources

标签 ruby-on-rails ruby-on-rails-3 routes nested-routes

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/

相关文章:

ruby - 使用文件夹中的模块扩展模型

ruby-on-rails - View 仅显示标题: and Text: but does not seem to fetch data from database

php - Slim 4 中的路由中间件不会停止调用路由中的可调用对象

ruby-on-rails - Ruby on Rails 4 解析前 3 个 RSS 项

ruby-on-rails - 如何更改 Rails 中 Active Record 的默认时区?

ruby-on-rails - gem bootstrap-sass 和 gem twitter-bootstrap-rails 有什么区别

ruby-on-rails - 在本地/测试中开发时如何保持电子邮件公司的 IP 信任

routes - 显示 Akka HTTP 中所有路由的列表

ruby-on-rails - 升级到 Rails 3 : Problem with routes

ruby-on-rails - rspec 使用 draper Decorator 测试 View