Rails 3.1 escape_javascript在 Rails 3.0 中无法按预期工作



使用Rails3.0时,如果想要通过javascript(例如AJAX调用)呈现部分内容,则可以像这样转义

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

它会起作用,因为escape_javascript转义了换行符、引号等。

在Rails3.1中,同样的方法是转义所有内容(例如包括<),使我无法呈现内容。这在3.1中有变化吗?你是怎么做到的?

提前感谢!

您可能使用的是刚刚发布的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

更新:

Rails3.1.0.rc3今天发布,修复了这个问题。

相关内容

  • 没有找到相关文章

最新更新