我有一个要显示的 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 的解决方案一定是个普遍问题。
最佳答案
在分隔符字符串上使用 safe_join
和 html_safe
。
例子:
<%= safe_join(links.map { |l| link_to(l.title, l.url) }, ", ".html_safe) %>
关于ruby-on-rails - 我可以在 Rails 中使用 link_to 创建链接数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17561050/