Как может я заставлять направляющие не представлять оставленные кавычки как \"

В моем расположении я имею

<% @current_user.popups.each do |p| %>
  <% content_for :script do %>
    <%= "$(document).ready ( function() { $.jGrowl(\"#{p.message}\", { sticky: true }) });" %>
  <% end %>
<% end %>

И затем в сценарии разделяют, я имею

<%= yield :script %>

Проблема состоит в том, что это представляет завершенные кавычки как \&quot; и JavaScript не нравится это.

Как я могу мешать этому произойти? Или есть ли другой подход к этому? Я не могу использовать одинарные кавычки, потому что я хотел бы иметь некоторый HTML в сообщении. Я ценил бы любую справку.

6
задан James 17 May 2010 в 22:22
поделиться

1 ответ

Вы используете Rails 3? В Rails 3 экранирование html выполняется по умолчанию , и вы должны обходить его каждый раз следующим образом: jdl имел правильную идею выше, но похоже, что у вас все еще есть проблемы.

<% content_for :script do %>
  $(document).ready ( function() { $.jGrowl("<%= raw(p.message) %>", { sticky: true }) });
<% end %>

Но еще лучше было бы запустить его через помощник, предоставляемый rails : escape_javascript , поэтому избегайте возврата каретки и кавычек

следующим образом:

$(document).ready ( function() { $.jGrowl("<%= raw(escape_javascript(p.message)) %>", { sticky: true }) });
11
ответ дан 9 December 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: