Ruby HAML在每个.do中添加If Condition



我有一个haml-ruby站点,它正在从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的新手,正在修改另一个开发人员代码。

如果@price_bookActiveRecord::Relation对象,而不仅仅是YourModel的数组,并且productcodeYourModel的String列,则可以调用其他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 的项目

最新更新