添加 if in Ruby heredocs

Add if in Ruby heredocs

我正在尝试使用 javascript 显示产品详细信息。我正在使用 haml 和 RoR-4.2.1。我有以下代码

var a = new Array();

#{@productlist.map do |prdct|
  <<-EOS
  var t = new Object();
  t.product_id = '#{prdct.product_id}';
  t.name = '#{prdct.name}';     
  t.address = '#{prdct.address}';
  a.push(t)
  EOS
 end.join("\n")}

我有一个模型图像,其中包含产品图像。产品可能有也可能没有图像。所以为了显示图像,我添加了以下内容

t.shop_image =
"#{if prdct.images.present?
          prdct.images.first.image_url
  else
      ''
  }"

推送语句之前的语句。但它正在产生一个问题。如果查看 heredocs,我该如何添加。

方法 1:执行与 "normal" 字符串相同的操作。

"#{product.images.present? ? product.images.first.image_url : ''}"

方法1+:把上面的表达式提取到一个变量中,让你的模板包含更少的逻辑。

方法 2:不要滥用 heredocs 而是 use ERB