我有一个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}";
}
任何想法如何迫使评估实时进行?
答案 0 :(得分:1)
您可以使用try
方法:
"#{@project.builds.last.try(:updated_at)}"
如果没有builds
,它将生成空字符串,但这并不重要,因为这部分JS不会在这种情况下执行。虽然我会建议重构,但是在HAML中使用Ruby内插的内联JS并不是非常易读且易于调试。