Ruby on rails Rails使用url而不是路径将_链接到对象插值

Ruby on rails Rails使用url而不是路径将_链接到对象插值,ruby-on-rails,link-to,Ruby On Rails,Link To,我有两个模型,分别是User和Group 我知道我可以使用不同的解决方案访问每个对象的show action: # 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.n

我有两个模型,分别是
User
Group

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

# 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
有没有一种方法可以插入以获取url

我可以这样写:

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

但是有更干净的方法吗?

不幸的是,当您只传入模型时,没有方法告诉link\u使用url。你必须坚持使用
user\u url


url\u,用于在传入ActiveRecord(以及其他一些情况)时对传递的对象调用多态路径()。您可以使用多态url来获取所需内容

link_to object.name, polymorphic_url(object)

您能否解释一下为什么需要使用URL而不是路径?一种可能的方法是使用继承的资源所做的事情。它创建resource\u path和resource\u url帮助程序,根据上下文返回相应对象的路径/url。我需要resource\u url帮助程序,因为它将在电子邮件中发送。太棒了!我会检查这个方法的源代码!