Ruby HAML 将 If 条件添加到 each.do

Ruby HAML add If Condition to each.do

我有一个从 Salesforce 中提取数据的 haml ruby 站点。我需要做的是根据 SF 中列出的 productCode 设置一个 if 条件。 each.do建立一个循环,在循环中显示每条记录的相关数据。

客户想要 productFamily 特定页面。所以我需要遍历所有产品代码为 GEA 的页面和 GFE 为另一页面的所有项目。

      .row
    .col-xs-12
      - @price_book.where(:productCode => GEA).each do |prod|

        .row
          .panel.panel-default
            .panel-body
              .col-xs-4
                %img{:src => "#{prod.productUrl}", :height => "200", :width => "150"}

当我尝试 运行 时,出现以下错误:

ActionView::Template::Error (uninitialized constant ActionView::CompiledTemplates::GEA): 
7:  
8:       .row 
9:         .col-xs-12 
10:           - @price_book.where(:productcode => GEA).each do |prod| 
11:  
12:             .row 
13:               .panel.panel-default 

感谢您的帮助,我是 Ruby 的新手,正在修改另一个开发者代码。

如果 @price_book 是一个 ActiveRecord::Relation 对象,而不仅仅是 YourModel 的数组,并且 productcodeYourModel 的字符串列,那么您可以调用额外的 ActiveRecord像 where:

这样的方法
@price_book.where(:productcode => 'GEA')

如果 GEA、GFE 不是在视图中定义的变量,那么值应该用引号引起来(双引号)'GEA'"GFE".


你可以放

= @price_book.inspect

在您的模板中获取更多信息。告诉我们什么是对象@price_book,我们会给你建议。

通过对代码进行以下修改,我能够将 if 过滤器逻辑应用于循环

    - @price_book.select{ |prod| prod[:productCode] == "GEA" }.each do |prod|

这仅返回价格手册中产品代码为 GEA 的项目