Rails - вывод списка элементов с запятой после каждой записи, за исключением последней

Я делаю следующее прямо сейчас в одном из моих представлений почтовой программы:

<% @participants.each do |participant| %>
    <%=participant.user.full_name%>
<% end %>

Мне нужна запятая после каждой записи, кроме последней, я полагаю, что я мог бы добавить блок if, чтобы увидеть, является ли текущая запись последней, но это похоже на много кода. У рельсов есть лучший способ вывода запятой после каждого элемента, за исключением последнего.

Good: XXXXX, XXXXXX, XXXXX
Bad: XXX,XXX,XXXX,

Спасибо

Ответы

Ответ 1

Вы можете сделать что-то вроде

@participants.map{|p| p.user.full_name}.join(",")

Вам также может понадобиться изучить метод to_sentence, который Rails добавляет к классу Array; он позволяет вам делать такие вещи, как вывод "xxx, yyy и zzz" автоматически.

Ответ 2

["Apple", "Orange", "Pie"].join(", ") => "Apple, Orange, Pie"

в более сложном задании:

<% @participants.each do |participant| %>
  <%= participant.user.full_name %>: <%= participiant.comment %><%= "," unless participiant == @participiants.last %>
<% end %>

Ответ 3

Если ваш реальный случай более сложный (будет полезен для частичных), вы можете значительно упростить его, заменив ваш цикл на частичный сбор:

<%= render :partial => "name", :collection => @participants, :spacer_template => "comma" %>

Ответ 4

<% @example.each_with_index do|example,index|%>
 <%=example.name%>
 <%= "," unless @example.size==index+1 %>
<%end%>

Ответ 5

Вы также можете сделать это с помощью css

.list-csv {
	  display: inline;
	  list-style: none;
	}
	.list-csv li {
	  display: inline;
	}
	.list-csv li:after {
	  content: ", ";
	}
	.list-csv li:last-child:after {
	  content: "";
	}
<ul class="list-csv">
	  <li>one</li>
	  <li>two</li>
	  <li>three</li>
	</ul>