0

にオブジェクトのコレクションがあるとしますproduct.categories

私がしたいのは、私のカテゴリのリストを次のように印刷することです。

男女

私が行った場合:

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

それは印刷しMen, Women,ます。

したがって、最後の要素とこれらすべてのものをチェックするために10億のルールを追加せずに、次のケースをどのように処理しますか:

  1. オブジェクトが 1 つの場合は no と入力します,
  2. これが複数のオブジェクトの最後である場合は、末尾に a を付けないでください,
  3. これが多数のコレクションの最後のオブジェクトである場合は、.<-- で終わります。これはあると便利ですが、必須ではありません。

どうすればこれを処理できますか?

ありがとう。

4

2 に答える 2

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

上記を試してみてください。他に欲しいものがあれば教えてください。

于 2012-12-18T04:58:39.497 に答える
2

できるよ:

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

「アスタリスク」メソッド ( Array#*) は のエイリアスですArray#join
ERb タグのすぐ外側のピリオドに注意してください。

于 2012-12-18T05:08:05.570 に答える