@tag
это строка.
Почему это работает:
tag_tracker = "<%= @tag %>";
alert(tag_tracker);
А не это?
tag_tracker = <%= @tag %>; // Why is this not read as a string?
alert(tag_tracker);
Заранее спасибо!
Если у вас есть JS внутри файлов ERB, вы должны убедиться, что сгенерированный код javacript является правильным.
Предположим, что у вас есть строка "div"
хранящаяся в @tag
Первый вариант:
tag_tracker = "<%= @tag %>";
alert(tag_tracker);
сгенерирует правильный JS с div
заключенным в кавычки.:
tag_tracker = "div";
alert(tag_tracker);
Второй:
tag_tracker = <%= @tag %>;
alert(tag_tracker);
сгенерирует JS без кавычек вокруг div
:
tag_tracker = div;
alert(tag_tracker);
и это неверно, потому что в этом случае div
интерпретируется как переменная, а не как строка.
<%= @tag.inspect %>
"div"
. Хотя inspect будет работать для строк, целых чисел и массивов, он не будет работать для хэшей. Хотя.to_json
будет в рельсах приложений.