Rails link_to使用url而不是path进行对象插值

时间:2014-02-07 16:40:25

标签: ruby-on-rails link-to

我有两个模型,比如UserGroup

我知道我可以使用不同的解决方案访问每个对象的show动作:

# PATH
link_to user.name, user_path(user)
link_to group.name, group_path(group)

# URL
link_to user.name, user_url(user)
link_to group.name, group_url(group)

但是Rails的魔法发生在

# PATH
link_to user.name, user_path(user)
link_to group.name, group_path(group)
# is equivalent to
# PATH
link_to user.name, user
link_to group.name, group

我可以通过插值来获取网址吗?

我可以这样写:

link_to user.name, send("#{user.class.name.downcase}_url", user)

但是有更清洁的方式吗?

2 个答案:

答案 0 :(得分:6)

url_for使用您传入ActiveRecord时传递的对象(以及其他一些情况)调用polymorphic_path()。你可以使用polymorphic_url来获得你想要的东西。

link_to object.name, polymorphic_url(object)

答案 1 :(得分:1)

不幸的是,当你只传入模型时,没有办法告诉link_to使用url。你必须坚持user_url

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to