ruby-on-rails - 我可以在 Rails 中使用 link_to 创建链接数组吗?

标签 ruby-on-rails ruby arrays join link-to

我有一个要显示的 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_joinhtml_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/

相关文章:

ruby-on-rails - active_record 序列化属性默认为空数组

ruby-on-rails - 如何在 _integration_ 测试中设置引用者

ruby - 数字前0

arrays - 遍历数组以找到超过 10 的 int 并将这两个数字加在一起

javascript - 计算幂和的问题

ruby-on-rails - 我如何旋转一个集合,导致布局改变动态显示的顺序?

ruby-on-rails - Public_activity gem 参数 Rails 3

ruby - 如何使用 Nokogiri 从 HTML 中删除不需要的标签?

c++ - 如何动态分配涉及指针的结构?

python - 创建多维零点 Python