2011-02-03 12 views
14
私は今、私のユーザーメーラービューの1つに、次のやってる

除く各レコードの後に​​コンマで項目のリストを出力:Railsは - 最後

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

私は除いて、すべてのレコードの後に​​カンマをしたいです最後には、現在のレコードが最後のレコードかどうかを調べるためにifブロックを追加することができますが、それは多くのコードのようです。レールは最後のものを除くすべての項目の後にコンマを出力するより良い方法を持っていますか?

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

おかげ

答えて

29

あなたはまた、RailsはArrayクラスに追加されますto_sentence方法を検討することをお勧めします

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

ような何かを行うことができます。出力 "xxx、yyy、zzz"のようなものを自動的に行うことができます。より複雑な仕事で

+0

はちょうど同じを投稿するには、署名した、あなたはそれに私を打ちます。後に<%= beforeと%>を追加することを忘れないでください。 – Joc

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

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

実際のケースは(パーシャル恩恵を受ける)より複雑である場合、あなたは非常に部分的なコレクションを使用してループを置き換えることによって、それを簡素化することができます:

<%= render :partial => "name", :collection => @participants, :spacer_template => "comma" %> 
3
<% @example.each_with_index do|example,index|%> 
<%=example.name%> 
<%= "," unless @example.size==index+1 %> 
<%end%> 
1

することもできますdo it with css

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

関連する問題