如果集合智能地拥有多个产品,如何在集合项的显示中添加逗号?

时间:2012-12-18 04:55:37

标签: ruby-on-rails ruby-on-rails-3

假设我在product.categories中有一组对象。

我想要发生的是我打印的类别列表,如:

男人,女人

如果我这样做:

<% product.categories.each do |cat| %>
  <% if product.categories.count > 1 %>
    <%= "#{cat.name}, " %>
  <% else %>
    <%= "#{cat.name} " %>
  <% end %>
<% end %>

打印Men, Women,

因此,如果不添加十亿条规则来检查最后一个元素和所有这些内容,我该如何处理以下情况:

  1. 如果有一个对象,请不要,
  2. 如果这是多个对象中的最后一个,请不要在最后添加,
  3. 如果这是最后一个对象,在许多的集合中,以.&lt;结尾 - 这是一个很好的但不是必须的。
  4. 我该如何处理?

    感谢。

2 个答案:

答案 0 :(得分:2)

<%= product.categories.map{|cat| cat.name}.join(', ').to_s + "." %>

尝试上述,这将有效。如果你想要别的话,请告诉我。

答案 1 :(得分:2)

你可以这样做:

<%= product.categories.collect{|c| c.name} * ', ' %>.

“星号”方法(Array#*)是Array#join的别名 请注意ERb标记之外的句点。