0

私の erb ファイルでは、body タグに次のコードがあります。

<% @tasks.each do |task| %>  
  <%= task.name %>
<% end %>

これは機能していますが、task.otherAttribute が -1 に等しくない場合にのみ task.name を表示したいと考えています。

どういうわけか、これを行う方法がわかりません!どんなヒントでも大歓迎です。

前もって感謝します。

4

3 に答える 3

3

これを試して:

<% @tasks.each do |task| %>  
  <%= task.name if task.otherAttribute != 1 %>
<% end %>

または:

<% @tasks.each do |task| %>  
  <%= task.name unless task.otherAttribute == 1 %>
<% end %>

今後の参考のために、さらにいくつかのオプションを提供します。

<% @tasks.each do |task| %>
  <% if task.otherAttribute != 1 %>
    <%= task.name %>
  <% end %>
<% end %>

<% @tasks.each do |task| %>  
  <%= task.otherAttribute == 1 ? '' : task.name %>
<% end %>

幸運を!

于 2012-06-15T23:54:35.830 に答える
3

#select私はこの慣用句にandを使用する傾向があり#rejectます。これは基本的にあなたがしていることだからです。

<%= @tasks.reject{|t| t.other_attribute == -1}.each do |task| %>
  <%= task.name %>
<% end %>

これらは、メソッドを持つほとんどのものに含まれるEnumerable#eachモジュールから取得されます。

于 2012-06-16T00:17:58.453 に答える
0

ERB コードに条件を入れることができます。

<%= task.name if task.otherAttribute != 1 %>

より詳細な構文を使用して、より複雑なタスクを実行することもできます。あなたの場合は必要ありませんが、次のように従来の if/else ブロックを実行することもできます。

<% if task.otherAttribute != 1 %>
  <%= task.name %>
<% end %>
于 2012-06-15T23:54:57.083 に答える