I have two models, say User
and Group
I know I can access the show action to each object with the different solutions:
# 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)
But Rails' magic occurs when
# 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
Is there a way I can interpolate to get the url?
I could write something like this:
link_to user.name, send("#{user.class.name.downcase}_url", user)
But is there a cleaner way?
url_for calls polymorphic_path() with the object you pass when you pass in an ActiveRecord (as well as some other cases). you can use polymorphic_url instead to get what you want.
link_to object.name, polymorphic_url(object)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With