在Ruby中添加if heredocs

时间:2017-11-30 08:34:31

标签: ruby-on-rails ruby haml

我正在尝试使用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
      ''
  }"
push语句之前的

语句。但它产生了一个问题。如果检查heredocs,我该如何添加。

1 个答案:

答案 0 :(得分:0)

方法1 :使用“普通”字符串做同样的事情。

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

方法1 + :将上面的表达式提取到变量中,以便模板包含更少的逻辑。

方法2 :不要滥用heredocs和use ERB