我有两个模型,比如User
和Group
我知道我可以使用不同的解决方案访问每个对象的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)
但是有更清洁的方式吗?
答案 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