Звучит так, как будто вы столкнулись с проблемами отступов в вашем после-ERB CoffeeScript.Учитывая это:
errors_block = '<div id="errors_block"></div>'
<% if @attached_image.errors.any? %>
something...
<% end %>
Вывод будет выглядеть так, когда условие if
выполнено:
errors_block = '<div id="errors_block"></div>'
something...
, и этот отступ запускает новый блок, который не имеет смысла вэтот контекст;следовательно, ошибка «Неожиданный« INDENT »от компилятора CoffeeScript.Вы можете увидеть это в действии в этом фрагменте на coffeescript.org .
CoffeeScript очень чувствителен к отступам, поэтому смешивать ERB и CoffeeScript, как это, не очень хорошая идея.Лучше было бы поместить @attached_image.errors
в переменную CoffeeScript и затем выполнить логику в CoffeeScript, что-то вроде этого (непроверенный код):
errors = <%= @attached_image.errors.to_a.to_json.html_safe %>
errors_block = '<div id="errors_block"></div>'
if errors.length > 0
something...
Версия массива ошибок JSON должна быть действительнойCoffeeScript, поэтому errors
будет массивом CoffeeScript.to_a
есть в случае, если errors
вернет nil
, я не уверен, что на макушке, если errors.nil?
возможно, но небольшая дополнительная паранойя никогда никому не повредит.
Вы могли бытакже сделайте это:
errors_block = '<div id="errors_block"></div>'
<% if @attached_image.errors.any? %>
something..
<% end %>
, но это труднее читать, и вы забудете.Вам лучше использовать ERB для генерации данных CoffeeScript и позволить CoffeeScript обрабатывать логику.