jml评估haml中的ruby对象抛出undefine方法异常

时间:2014-11-26 10:11:55

标签: javascript ruby-on-rails ruby haml

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

  

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

on project.build.last。

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

任何想法如何迫使评估实时进行?

1 个答案:

答案 0 :(得分:1)

您可以使用try方法:

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

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