使用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今天发布,修复了这个问题。