У меня есть список значений в парах url/title, которые я бы хотел отобразить. (Более конкретно, каждый объект имеет свой собственный список ссылок, некоторые с 0, некоторые с 1, некоторые с большим числом.) Я хотел бы, чтобы они отображались в списке, разделенном запятой. Поэтому я написал это в файле .erb:
<%= links.map{|wl| link_to wl.title, wl.url}.join(', ') %>
Скорее всего, это показало список HTML-кода, разделенный запятыми, для ссылок, которые я хотел создать; то есть он принимает все угловые скобки и кодирует их амперсанд. Чтобы убедиться, что в функциях более высокого порядка не было ничего смешного, я попробовал более настоятельную версию:
<% a = [] %>
<% links.each do |wl| %>
<% a << link_to(wl.title, wl.url) %>
<% end %>
<%= a.join(', ') %>
с, конечно, тем же результатом. Но я не думаю, что я злоупотребляю link_to
, потому что если я изменю это на
<% links.each do |wl| %>
<%= link_to(wl.title, wl.url) %>,
<% end %>
то он фактически создает ссылки. Это почти то, что я хочу, за исключением того, что после последней есть дополнительная запятая. Есть ли какая-то магия под капотом с link_to
, что заставляет ее действовать по-разному в зависимости от того, куда идет ее выход? Есть ли способ обойти эту магию? Семантика join
была бы именно то, что я хочу здесь, и я могу, очевидно, выяснить, как свертывать свои собственные (используя, вероятно, each_index), но похоже, что это очень тяжелое и нерубивное решение того, что должно быть общей проблемой.