如果条件重复,则跳过数组结果

时间:2013-09-25 12:35:49

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1

articles.facets['date']['terms']有这个数组:

[{"term"=>13, "count"=>4}, {"term"=>12, "count"=>1}]

如果阵列中有多个元素符合超过10年的要求,我希望只打印一次“超过10年”的文本

<% articles.facets['yearsexperience']['terms'].each do |facet| %>
  <% if facet['term'] > 10 %>
    "More than 10 years"
  <% end %>
<% end %>

我现在收到相同文字的2倍:

"More than 10 years" 
"More than 10 years"

2 个答案:

答案 0 :(得分:3)

使用.any?。它接受一个它为枚举中的每个元素调用的块,如果块返回{em>数组中 元素的true,则返回true:

<% if articles.facets["yearsexperience"]["terms"].any? { |t| t['term'] > 10 } %>
  More than 10 years
<% end %>

答案 1 :(得分:0)

你可以使用break来摆脱.each语境:

<% articles.facets['yearsexperience']['terms'].each do |facet| %>
  <% if facet['term'] > 10 %>
    "More than 10 years"
    <% break %>
  <% end %>
<% end %>