Rails - 在除最后一个记录之外的每个记录之后输出带逗号的项目列表

AnA*_*ice 16 ruby ruby-on-rails

我现在正在我的一个用户邮件程序视图中执行以下操作:

<% @participants.each do |participant| %>
    <%=participant.user.full_name%>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我希望除了最后一个记录之后每个记录都有一个逗号,我想我可以添加一个if块来查看当前记录是否是最后一个,但这似乎是很多代码.在除了最后一项之外的每个项目之后,rails是否有更好的方法输出逗号.

Good: XXXXX, XXXXXX, XXXXX
Bad: XXX,XXX,XXXX,
Run Code Online (Sandbox Code Playgroud)

谢谢

Jac*_*son 31

你可以做点什么

@participants.map{|p| p.user.full_name}.join(",")
Run Code Online (Sandbox Code Playgroud)

您还可能希望查看to_sentenceRails添加到Array类的方法; 它可以让你自动输出输出"xxx,yyy和zzz".


fl0*_*00r 19

["Apple", "Orange", "Pie"].join(", ") => "Apple, Orange, Pie"
Run Code Online (Sandbox Code Playgroud)

在更复杂的工作:

<% @participants.each do |participant| %>
  <%= participant.user.full_name %>: <%= participiant.comment %><%= "," unless participiant == @participiants.last %>
<% end %>
Run Code Online (Sandbox Code Playgroud)


Mar*_*mas 8

如果您的实际案例更复杂(将从partials中受益),您可以通过将部分集合替换为循环来大大简化它:

<%= render :partial => "name", :collection => @participants, :spacer_template => "comma" %>
Run Code Online (Sandbox Code Playgroud)