2014-11-02 32 views
1

我想打印出由Rails中的逗號分隔的鏈接列表。在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> 

但現在我得到循環的最後一次迭代額外的逗號!我該怎麼辦?

回答

9

一種方法是用map然後Array#join

<%= topics.map { |topic| link_to(topic.name, topic.link) }.join(',').html_safe %> 
1

如何使用each_with_index,並且只在內容之前加上逗號,除非它不是第一項。這樣做的

<% topics.each_with_index do |topic, i| %> 
    <% if i > 0 %> 
    , 
    <% end %> 
    <a href="<%= topic.link %>"><%= topic.name %></a> 
<% end %> 
+0

@ User089247,此代碼是不打印之前(不是之後)第一個逗號。看到這個:http://ideone.com/ADAFQX – falsetru 2014-11-02 09:24:00

1

,如果你想要做的最小可能改變你的代碼,你可以使用下面的

<%= topics.each do |topic| %> 
    <a href="<%= topic.link %>" ><%= topic.name %></a> 
    <% if(topic != topics.last) %> 
    , 
    <% end %> 
<% end %> 
+0

是這樣的順序保證? – 2014-11-03 18:47:06

+0

@DonnyP是的,因爲迭代由每個迭代器處理,它保證了數組中的順序 – Raman 2014-11-09 03:43:22

0

簡單嘗試這個。它適用於我

<%= topics.map{|p| p.topic.name}.join(",") %> 
相關問題