Say you have Posts which have Tags associated with them. In the Post index view you display all Posts, with the Tags for each.
Title: Cities of Africa
Tags: Cape TownFesNairobiKigaliKhartoum
Title: Cities of South America
Tags: Buenos AiresRio de JaneiroQuitoSantiagoBogotá
You'll notice a problem here. All the tags are listed without any kind of separation. The reason is because in the view we are rendering a partial for each tag whereby each partial simply lists and links the tag name, and these are then listed out.
tags\_tag.html.erb
<%= link_to tag.name, tag_path(tag) %>
posts\index.html.erb
<%= render post.tags %>
To solve this problem, We can't just join the tags through render post.tags.join(", ")
. That would make Rails look for a partial by the name of our joined tags. It would work without the partials through post.tags.join(", ")
, but to keep using our partial we need to join the tags separately per post.
posts\index.html.erb
<%= post.tags.map { |t| render t }.join(", ").html_safe %>
This gives us a nicely comma-separated list, whilst maintaining the tag links.
Title: Cities of Africa
Tags: Cape Town, Fes, Nairobi, Kigali, Khartoum
Title: Cities of South America
Tags: Buenos Aires, Rio de Janeiro, Quito, Santiago, Bogotá