【问题标题】:How can I get the route from an object array in a model?如何从模型中的对象数组中获取路线?
【发布时间】:2014-01-03 17:14:13
【问题描述】:

我有一个负责操纵资源路径的模型。如果可以的话,我想利用一些 Rails 路由助手。我不想对被操纵的资源类型做出任何假设,因为我希望它是通用的。

http://edgeguides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects 声明“您还可以将 url_for 与一组对象一起使用,Rails 会自动确定您想要的路线:”

<%= link_to 'Ad details', url_for([@magazine, @ad]) %>

从我发现的 url_for 帮助程序通常期望一个包含控制器、操作等的哈希。我一直在寻找的是上面的 url_for 似乎正在返回的内容,它是来自对象数组的资源路径.我不确定我是否只是使用了错误的命名空间,但是查看 API 文档,我找不到可以提供上述方法的命名空间。

为了澄清,我正在尝试在模型中执行以下操作:

resource_array = [parent_resource, child_resource]
resource_path = url_for(resource_array)

我通常将任何路由代码保留在模型类之外,但这个类专门用于操纵资源路径。提前致谢。

编辑: 这是我最终使用的语法:

Rails.application.routes.url_helpers.polymorphic_path(resource)

编辑(2): 我觉得必须有更好的方法来做到这一点,但这就是我现在所拥有的。

resource_path = ''
resource_array.each do |resource|
  resource_path += '/' + resource.class.name.pluralize.underscore + '/' + resource.id.to_s
end

【问题讨论】:

    标签: ruby-on-rails routing


    【解决方案1】:

    我不确定这是您要的,但url_for 是模块ActionDispatch::Routing::UrlFor 的实例方法,因此您需要extendinclude 该模块才能访问方法。

    【讨论】:

    • 我最终使用了多态路径。我发誓我已经尝试过上述方法(有问题的编辑)。前几天的语法,但这似乎可以按我的意愿工作。根据您的建议,我找到了文档,因此感谢您抽出宝贵时间回答:)
    • 实际上我忘记了我想让它与嵌套资源一起使用。我可能只是手动构建资源路径。
    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多