javascript – 防止rails将特殊字符转换为HTML实体

我正在使用以下帮助函数,但它似乎将我的 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; – & quot;等:

<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视图中,您经常会看到以下内容
<%=h @object.field %>

但是,在Rails 3中,认情况下输出现在已转义.您不再需要h()方法.为了获得非转义输出,您必须使用原始方法.

更多信息请访问:http://railscasts.com/episodes/204-xss-protection-in-rails-3

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...