使用 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/