2

我试图在 Rails 中找到一个模型,我不一定知道 rake 任务中的类(所以它不在 .erb 中)。

我知道我可以这样做:

Rails.application.routes.url_helpers.<model>_path(model)

但是如果我不一定知道模型怎么办?打开 model.class 或任何其他此类检查似乎不是 Rails-y。我只是在寻找模型的默认路径或 url。

编辑:为了澄清我所说的默认路径,它是你在做 link_to 时得到的 href;即,您可以这样做:

<%= link_to "my model", @model %>

没有指定像 model_path 这样的 url 助手。这就是我要找的。

4

1 回答 1

4

在内部,link_to调用url_for以获取给定参数的路径。

如果您url_for使用模型调用,它将进一步转发到polymorphic_pathpolymorphic_url

所以像这样的东西应该可以工作,如果你只想要路径

task :some_task => :environment do
  include Rails.application.routes.url_helpers

  # ...

  path  = polymorphic_path(some_model_instance) # => e.g. "/widgets/42"
end

您也可以只使用url_for,但您必须定义:host选项。看这里了解更多

于 2013-04-18T05:30:17.657 回答