Ruby - 检查对象中是否存在某些值

时间:2015-02-25 10:19:38

标签: ruby-on-rails ruby

我可能会接近这一切(我对Ruby很新),但有人可以告诉我如何检查对象中的某些值吗?

我想检查product.taxons中的任何分类单元是否在其machine_names中包含任何'rush_delivery'或'customization_possible'。

我的模板代码:

<div class="expanded">
    <% product.taxons.each do |t| %>
      <% if t.machine_name == 'rush_delivery' %>
        <p class="icon icon-urgent">
          <span class="tooltip"><%= Spree.t('usp.rush_delivery') %></span>
        </p>
      <% end %>
      <% if t.machine_name == 'customization_possible' %>
        <p class="icon icon-customize">
          <span class="tooltip"><%= Spree.t('usp.customization_possible') %></span>
        </p>
      <% end %>
    <% end %>
  </div>

目标是在父div上添加一个隐藏类,如果它们不存在。

1 个答案:

答案 0 :(得分:1)

所以你的条件会是这样的:

product.taxons.any? { |taxon| 
  ['rush_delivery', 'customization_possible'].include?(taxon.machine_name)
}

我认为这种逻辑并不属于一种观点。有不同的方法来清理它,这取决于您的需求选择方式:您只能在控制器中加载具有匹配的machine_way的产品。您可能希望使用封装逻辑的presenter对象,或者将其更多地封装到帮助程序中。