Подтвердить что ты не робот

Inline ruby ​​in: javascript haml tag?

Эй, есть ли способ, которым я могу это сделать в haml?

:javascript
   var Tab = <%= @tab %>

Я мог бы просто добавить помощника, я думаю:

<script>
  var Tab = '<%= @tab %>'
</script>

Но было бы неплохо использовать HAML!

4b9b3361

Ответ 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.