【问题标题】:Add if in Ruby heredocs [closed]在 Ruby heredocs 中添加 if [关闭]
【发布时间】:2017-11-30 08:34:30
【问题描述】:

我正在尝试使用 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,我该如何添加。

【问题讨论】:

  • “但它正在产生问题” - 什么问题?

标签: ruby-on-rails ruby haml


【解决方案1】:

方法 1:执行与“普通”字符串相同的操作。

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

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

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

【讨论】:

  • 感谢您的快速回复。我可以通过“#{if product.images.present? then product.images.first.image_url else '' end}”来解决它。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多