我想在Rails中打印出逗号分隔的链接列表。
继承人我所得到的:
<%= topics.each do |topic| %>
<a href="<%= topic.link %>" ><%= topic.name %></a>
,
<% end %>
继承人我想要的东西:
<a href="thing_a">Thing A</a>,
<a href="thing_b">Thing B</a>,
<a href="thing_c">Thing C</a>
但是现在我在循环的最后一次迭代中得到了一个额外的逗号!我该怎么办?
答案 0 :(得分:11)
执行此操作的一种方法是使用map
然后Array#join
:
<%= topics.map { |topic| link_to(topic.name, topic.link) }.join(',').html_safe %>
答案 1 :(得分:4)
如果您想对代码进行尽可能少的更改,可以使用以下
<%= topics.each do |topic| %>
<a href="<%= topic.link %>" ><%= topic.name %></a>
<% if(topic != topics.last) %>
,
<% end %>
<% end %>
答案 2 :(得分:2)
如何使用each_with_index
,只在内容之前加上逗号,除非它不是第一项。
<% topics.each_with_index do |topic, i| %>
<% if i > 0 %>
,
<% end %>
<a href="<%= topic.link %>"><%= topic.name %></a>
<% end %>
答案 3 :(得分:1)
我使用concat
帮助器在一行调用(用于活动记录集合)中创建了它:
<% concat (',') if e.bills.last != b %>
concat
is an ERB helper (TextHelper)添加一些没有<%= %>
语法的HTML,有助于添加少量字符。
以下是完整的代码:
<% event.bills.each do |b| %>
<%= link_to(b.number.to_s, bill_display_path(b)) %>
<% concat (',') if e.bills.last != b %>
<% end %>
答案 4 :(得分:0)
您可以执行以下操作以打印除最后一项以外的所有项目的逗号:
category amount
A 10
B 15
C 20
D 35
E 10
my_total 10
这将检查循环中的当前项目是否为最后一项,并将使用<% topics.each do |topic| %>
<%= topic %>
<%= "," if topic != topics.last %>
<% end %>
语法输出逗号。
答案 5 :(得分:-1)
试试吧。它对我有用
<%= topics.map{|p| p.topic.name}.join(",") %>