Эй, есть ли способ, которым я могу это сделать в haml?
:javascript
var Tab = <%= @tab %>
Я мог бы просто добавить помощника, я думаю:
<script>
var Tab = '<%= @tab %>'
</script>
Но было бы неплохо использовать HAML!
Ответ 1
Вы можете использовать синтаксис интерполяции строк (#{...}):
:javascript
var tab = #{@tab}
Позаботьтесь об эвакуации.
Ответ 2
Это ужасный способ структурирования кода.
Встроенный JavaScript достаточно плох. Встроенный JavaScript с ERb внутри ставит вас прямо в ад.
JavaScript должен быть во внешних статических файлах. Таким образом браузер может их кэшировать, и вы можете использовать JavaScript в качестве реального языка программирования.
В вашем случае я бы рекомендовал что-то вроде:
(файл Haml)
#tab= @tab
(файл CSS)
#tab { display: none }
(файл Javascript)
var Tab = $('#tab').innerHTML();
Таким образом, все остается статичным и поддерживаемым, и вы не смешиваете JS и HTML.