在我的erb文件中,我在body标签中有以下代码:
<% @tasks.each do |task| %>
<%= task.name %>
<% end %>
这是有效的,但如果task.otherAttribute不等于-1,我只想显示task.name。
出于某种原因,我无法弄清楚如何做到这一点!任何提示都会非常感激。
提前谢谢。
答案 0 :(得分: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 %>
祝你好运!
答案 1 :(得分:3)
我倾向于使用#select
和#reject
这个习惯用法,因为那基本上就是你正在做的事情。
<%= @tasks.reject{|t| t.other_attribute == -1}.each do |task| %>
<%= task.name %>
<% end %>
这些来自Enumerable模块,其中包含#each
方法的大多数内容都包含在内。
答案 2 :(得分:0)
您可以将条件纳入您的ERB代码。
<%= task.name if task.otherAttribute != 1 %>
您还可以使用更详细的语法执行更复杂的任务。在你的情况下没有必要,但你也可以做更传统的if / else块,如下所示:
<% if task.otherAttribute != 1 %>
<%= task.name %>
<% end %>