【问题标题】:How to add a nested route resource to all existing routes如何将嵌套路由资源添加到所有现有路由
【发布时间】:2014-07-25 13:49:12
【问题描述】:

我正在使用一个很棒的 gem,叫做 paper_trail。我创建了一个名为“历史”的页面,其中将列出任何资源的版本。我的路线文件有一个用于每条路线的嵌套资源......这根本不是 DRY。

resources :users do 
  get "/history" => "pages#history", as: "history"
end

这条路线给了我 users/1/history

resources :companies do 
  get "/history" => "pages#history", as: "history"
end

现在我有公司/1/历史

如何使 /history 作为所有路由的嵌套路由工作,而不用每个资源的嵌套历史路径填充我的路由文件?

【问题讨论】:

  • 你得到这个答案了吗?您也可以发布您的控制器吗?
  • 我还没有找到我正在寻找的“rails way”。我的控制器在这个问题中并不重要......这会影响每个控制器。我采用@jkeuhlen 块建议的方式是创建一个包含所有模型的数组,然后遍历该数组并将数组中的字符串值转换为符号,并为数组中的每个模型构建一个动态历史路由资源。希望这是有道理的。它有点干净......但是,不是我希望找到的“rails way”。

标签: ruby-on-rails ruby-on-rails-4 routes paper-trail-gem


【解决方案1】:

您可以在一个块中执行这些类型的操作,以避免一遍又一遍地重复自己。

resources :users, :companies do 
  get "history" => "pages#history", :on => :member
end

this SO question 上提供了一些额外的有用信息。

【讨论】:

  • 这比将历史资源嵌套在每个路由的块内要干净一些。我还没有找到任何更清洁的东西......当然看起来rails会有一种更清洁的方式来做到这一点。谢谢。
  • 我认为这是唯一的“rails 方式”。当你有 10 多个资源时会很混乱,但比单独拥有每个块要好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多