【问题标题】:Get list of used path segments in controller action获取控制器操作中使用的路径段列表
【发布时间】:2018-10-22 15:59:04
【问题描述】:

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

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

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

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

有什么方法可以在控制器的操作中检索用于路由的段?

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

【问题讨论】:

  • 如果我理解正确,您想将请求 url 中的参数(例如,id 等 URL 中的 id)与请求参数的其余部分区分开来吗?
  • @ldeld 是的。从request.params,我只想要来自动态路径段的对象。另外,我刚刚发现确实可以将自定义参数传递给控制器​​操作。

标签: ruby-on-rails routes


【解决方案1】:

事实证明,可以向控制器操作添加任意参数,如下所示:

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 散列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2011-07-09
    相关资源
    最近更新 更多