获取控制器动作中已使用路径段的列表

时间:2018-10-22 15:59:04

标签: ruby-on-rails routes

为Rails应用程序动态创建路由时,如何知道请求中使用了哪些路径段?

请求的params哈希值包含使用的路径段及其值,但是它还包含其他内容。这样就无法知道params哈希中的哪些键是路径段的那些键。

示例:以下代码在我的应用程序中动态创建路由(例如/photos/:photoId):

MyApp::Application.routes.append do
  routes.values.each do |route|
    get "/#{route['path']}" => 'routes#show'
  end
end

在控制器的操作中,是否有任何方法可以检索用于路线的路段?

或者,可以将其他参数传递给控制器​​操作吗?

1 个答案:

答案 0 :(得分:0)

事实证明,可以向这样的控制器动作添加任意参数:

MyApp::Application.routes.append do
  routes.values.each do |route|
    get "/#{route['path']}" => 'routes#show', segments: route['segments']
  end
end

我认为情况并非如此,因为文章"Rails Routing from the Outside In"的任何地方都没有提及。


这不是理想的选择,因为它要求我将线段和路线对象一起存储。最好让Rails提供一个包含动态和通配符路径段的 segments 哈希。