2014-11-26 2 views
0

У меня есть javascript, который должен изменить элемент haml только при определении объекта ruby ​​ , к сожалению, "# {project.builds.last.updated_at}" был оценен, когда страница отображается ragrdeless к, если условие, что является ложным, и поэтому я получаюоценка javascript объекта ruby ​​внутри haml throw undefine метод исключение

«неопределенный метод` updated_at»для ноль: NilClass»

на project.build.last.

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

любая идея, как я могу заставить оценку быть в режиме реального времени?

ответ

1

Вы можете использовать try метод:

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

Он будет генерировать пустую строку, если нет нет builds, но это не имеет значения, так как эта часть JS не будет выполняться при выполнении этого условия. Хотя я бы советовал рефакторинг, причина встроенного JS с интерполяциями Ruby в HAML не очень читаема и легко отлаживается.

Смежные вопросы