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

对于这个习语,我倾向于使用#selectand #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 回答