javascript - Rails 3.1 escape_javascript 在 Rails 3.0 中无法正常工作

标签 javascript ajax ruby-on-rails-3

使用 Rails 3.0,如果想通过 javascript 呈现部分内容(例如在 AJAX 调用中),可以像这样转义内容

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

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

在 Rails 3.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

更新:

Rails 3.1.0.rc3 was released today这解决了这个问题。

关于javascript - Rails 3.1 escape_javascript 在 Rails 3.0 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284923/

相关文章:

javascript - 按钮 onclick jquery 不起作用

javascript - Javascript 为每个图像创建唯一的类

javascript - 如果innerHTML值等于指定值则停止提交

ruby-on-rails - 有条件的列的计数器缓存?

javascript - 缓存名称未显示在缓存存储内

Ajax 加载内容上的 JQuery 自动完成

asp.net - 如何在客户端使用 JavaScript 来使用远程 Web 服务?

ruby-on-rails - Ruby on Rails 教程第 3 版,第 9 章 : Failed test on users_edit_test. rb

ruby-on-rails - 深嵌套的accept_nested_attributes_for不在编辑模板中呈现属性数据

javascript - 'a href' 按钮的单击功能未触发