在我的 erb 文件中,我在 body 标记中有以下代码:
<% @tasks.each do |task| %>
<%= task.name %>
<% end %>
这是有效的,但如果 task.otherAttribute 不等于-1,我只想显示 task.name。
由于某种原因,我无法弄清楚如何做到这一点!任何提示将不胜感激。
先感谢您。
试试这个:
<% @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 %>
祝你好运!
对于这个习语,我倾向于使用#select
and #reject
,因为这基本上就是你正在做的事情。
<%= @tasks.reject{|t| t.other_attribute == -1}.each do |task| %>
<%= task.name %>
<% end %>
这些来自Enumerable模块,大多数带有#each
方法的东西都包括在内。
您可以将条件放入您的 ERB 代码中。
<%= task.name if task.otherAttribute != 1 %>
您还可以使用更详细的语法执行更复杂的任务。在您的情况下没有必要,但您也可以像这样执行更传统的 if/else 块:
<% if task.otherAttribute != 1 %>
<%= task.name %>
<% end %>