我有一个要显示的 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),但它似乎是一个非常繁重且非 Ruby 的解决方案,它必须是一个常见问题。