我有一个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_book
是ActiveRecord::Relation
对象,而不仅仅是YourModel
的数组,并且productcode
是YourModel
的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 的项目