如何从模型中的对象数组中获取路径?

时间:2014-01-03 17:14:13

标签: ruby-on-rails routing

我有一个负责操纵资源路径的模型。如果可以的话,我想利用一些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

1 个答案:

答案 0 :(得分:0)

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