Ответ 1
Проблема здесь в строке "=". Поскольку он считается небезопасным, он окрашивает другую строку.
Возможно, вы также можете:
raw("=" + @campaign.to_json)
или
"= #{@campaign.to_json}".html_safe
которые примерно одинаковы.
Я пробовал все. Каждая комбинация помощников raw
, html_safe
to_json
включает некоторые попытки с ::JSON.encode
и CGI.unescape
. Проблема в том, что независимо от того, что я делаю, я не могу напечатать хорошо сформированный JSON в представлении. Он всегда удалялся HTML.
Здесь код на мой взгляд:
var campaignData<%= "=" + (raw @campaign.to_json) if @campaign %>;
В моем случае это всегда кавычки, которые экранируются как ". Я бы просто сделал gsub в кавычках, но это ужасное решение того, что ИМО должно быть очень простым, хорошо документированным вариантом использования.
Проблема здесь в строке "=". Поскольку он считается небезопасным, он окрашивает другую строку.
Возможно, вы также можете:
raw("=" + @campaign.to_json)
или
"= #{@campaign.to_json}".html_safe
которые примерно одинаковы.
Так как ActiveSupport 2.3.3 вы смогли сделать .as_json
Вы попробовали escape_javascript
?
Вот пример из файла *.haml, который я только что добавил, чтобы проверить свой ответ.
:javascript
var foo=$.parseJSON("#{j @albums.to_json}")
Где j
- короткий псевдоним для escape_javascript
.
Попробуйте это с помощью
var campaignData<%=h " =#{raw @campaign.to_json}" if @campaign %>;