gpt4 book ai didi

javascript - 防止 Rails 将特殊字符转换为 HTML 实体

转载 作者:太空狗 更新时间:2023-10-29 14:13:48 24 4
gpt4 key购买 nike

我正在使用以下辅助函数,但它似乎将我的 JavaScript 语句中的所有特殊字符都转换为 HTML 实体,使其变得无用和损坏。有什么建议吗?

 def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render(association.to_s + "_fields", :f => builder)
end
link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")"))
end

上面生成了一个这样的链接(注意转换为 $amp; - " 等:

<a href="#" onclick="add_fields(this, &amp;quot;skills&amp;quot;, &amp;quot;&amp;lt;label for=\&amp;quot;user_skills_attributes_new_skills_name\&amp;quot;&amp;gt;Skill&amp;lt;\/label&amp;gt;\n&amp;lt;input data-autocomplete=\&amp;quot;/users/autocomplete_skills_vocab_name\&amp;quot; id=\&amp;quot;user_skills_attributes_new_skills_name\&amp;quot; name=\&amp;quot;user[skills_attributes][new_skills][name]\&amp;quot; size=\&amp;quot;30\&amp;quot; type=\&amp;quot;text\&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;\n&amp;lt;input id=\&amp;quot;user_skills_attributes_new_skills__destroy\&amp;quot; name=\&amp;quot;user[skills_attributes][new_skills][_destroy]\&amp;quot; type=\&amp;quot;hidden\&amp;quot; value=\&amp;quot;false\&amp;quot; /&amp;gt;&amp;lt;a href=\&amp;quot;#\&amp;quot; onclick=\&amp;quot;remove_fields(this); return false;\&amp;quot;&amp;gt;remove&amp;lt;\/a&amp;gt;&amp;quot;); return false;">Add a Skill</a>

编辑/

想通了——对于 Rails 3,删除 h()

最佳答案

在 Rails 2 中,默认情况下不对输出进行转义。 h() 方法执行此操作。在 Rails 2 View 中,您经常会看到以下内容:

<%=h @object.field %>

但是,在 Rails 3 中,输出现在默认进行转义。您不再需要 h() 方法。为了获得未转义的输出,您必须使用原始方法。

此处提供更多信息:http://railscasts.com/episodes/204-xss-protection-in-rails-3

所以基本上在您的情况下,您正在查看 Rails 2 代码,并且需要删除 h() 以针对 Rails 3 更新它。

关于javascript - 防止 Rails 将特殊字符转换为 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com