我正在尝试将Rails中的路径转换为一个模型,我不一定知道rake任务中的类(因此它不在.erb中)。
我知道我可以这样做:
Rails.application.routes.url_helpers.<model>_path(model)
但是,如果我不一定知道模型怎么办?打开model.class或任何其他此类检查似乎不是Rails-y。我只是在寻找模型的默认路径或网址。
编辑:为了澄清默认路径的含义,它是你在做link_to时得到的href;即,你可以这样做:
<%= link_to "my model", @model %>
没有指定像model_path这样的url帮助器。这就是我在寻找的东西。
答案 0 :(得分:3)
在内部,link_to
调用url_for
来获取给定参数的路径。
如果您使用模型致电url_for
,则会进一步转发至polymorphic_path
或polymorphic_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
选项。 See here了解更多