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

时间:2018-07-30 18:46:25

标签: ruby salesforce where each haml

我有一个haml红宝石网站,该网站正在从Salesforce中提取数据。我需要做的是根据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的新手,正在修改另一个Developers代码。

2 个答案:

答案 0 :(得分:0)

如果@price_bookActiveRecord::Relation对象,而不仅仅是YourModel的数组,并且productcodeYourModel的String列,则可以调用其他ActiveRecord方法,例如其中:

@price_book.where(:productcode => 'GEA')

如果GEA,GFE不是在视图中定义的变量,则值应使用引号(双引号)'GEA'"GFE"


您可以放

= @price_book.inspect

在您的模板中,并获取有关它的更多信息。告诉我们@price_book是哪种对象,我们将为您提供建议。

答案 1 :(得分:0)

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

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

这仅返回了价格簿中具有GEA产品代码的商品