Rails 3.1 escape_javascript не работает должным образом в Rails 3.0 - PullRequest
1 голос
/ 09 июня 2011

Работая с Rails 3.0, если бы кто-то хотел визуализировать некоторую частичку через javascript (например, в вызове AJAX), можно было бы избежать содержимого, например,

$('#some_id').html('<%= escape_javascript render(@post) %>');

, и это сработало бы, потому что escape_javascript экранированные переносы строк, кавычки и т. п.

В Rails 3.1 тот же метод экранирует все (включая, например, <), делая невозможным для меня рендеринг контента.Изменилось ли это в 3.1?Как ты это делаешь?

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

1 Ответ

4 голосов
/ 09 июня 2011

Вы, вероятно, на Rails 3.1.0.rc2, который был только что выпущен.В escape_javascript есть ошибка, которая была исправлена ​​сразу после выпуска (https://github.com/rails/rails/issues/1553), но еще не опубликована). Тем временем вы можете либо вернуться к версии 3.1.0.rc1, либо добавить инициализаторв ваш проект со следующим:

module ActionView::Helpers::JavaScriptHelper
  def escape_javascript_with_workaround(javascript)
    escape_javascript_without_workaround(javascript.try(:to_str)).html_safe
  end

  alias_method_chain :escape_javascript, :workaround
end

ОБНОВЛЕНИЕ:

Rails 3.1.0.rc3 был выпущен сегодня , что решает эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...