Использование переменных JavaScript для хранения выходных данных Ruby из <% =%>

1

@tag это строка.

Почему это работает:

tag_tracker = "<%= @tag %>";
alert(tag_tracker);

А не это?

tag_tracker = <%= @tag %>; // Why is this not read as a string?
alert(tag_tracker);

Заранее спасибо!

Теги:
erb

1 ответ

2

Если у вас есть 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 интерпретируется как переменная, а не как строка.

  • 0
    Для строк при использовании <%= @tag.inspect %> "div" . Хотя inspect будет работать для строк, целых чисел и массивов, он не будет работать для хэшей. Хотя .to_json будет в рельсах приложений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню