【问题标题】:javascript evaluation of ruby object inside haml throw undefine method exceptionjavascript评估haml中的ruby对象抛出未定义方法异常
【发布时间】:2014-11-26 10:11:54
【问题描述】:

我有一个 javascript,只有在定义 ruby​​ 对象时才应该更改 haml 元素 不幸的是,“#{project.builds.last.updated_at}”在页面被渲染为不符合条件的 if 条件为 false 时被评估,因此我得到了

"nil:NilClass 的未定义方法 `updated_at'"

在 project.build.last 上。

if ((#{@project.builds.size} && #{@project.builds.size}) > 0){  
  document.getElementById("lastSave").innerHTML = "#{@project.builds.last.updated_at}";
}

知道如何强制实时评估吗?

【问题讨论】:

    标签: javascript ruby-on-rails ruby haml


    【解决方案1】:

    你可以使用try方法:

    "#{@project.builds.last.try(:updated_at)}"
    

    如果没有builds,它会生成空字符串,但没关系,因为这部分JS不会在这种情况下执行。虽然我会建议重构,但因为在 HAML 中带有 Ruby 插值的内联 JS 不是很易读且易于调试。

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 2017-08-06
      • 2020-04-30
      • 2021-01-10
      • 2012-08-22
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 2016-11-30
      相关资源
      最近更新 更多