У меня есть список значений в парах url/title, которые я хотел бы отображать. (Более конкретно, каждый объект имеет свой собственный список ссылок, некоторые с 0, некоторые с 1, некоторые с большим числом.) Я хотел бы, чтобы они отображались в списке, разделенном запятой. Так что я написал это в моем .erb файла:Могу ли я создать массив ссылок, используя link_to в Rails?
<%= 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
была бы именно такой, какой я хочу здесь, и я могу, очевидно, выяснить, как свернуться с ней (используя, вероятно, каждый_индекс), но это похоже на ужасно тяжелое и нерубивое решение того, что должно быть общей проблемой.
<% = links.map {| з.д. | link_to wl.title, wl.url} .join (',') .html_safe%>? – oldergod