我有一个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代码。
答案 0 :(得分:0)
如果@price_book
是ActiveRecord::Relation
对象,而不仅仅是YourModel
的数组,并且productcode
是YourModel
的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产品代码的商品