Ruby on Rails:如何从文本输入中删除/删除/清理脚本,样式标记?

shi*_*bly 3 ruby ruby-on-rails sanitize ruby-on-rails-3 ruby-on-rails-3.1

<%= form_for @post.comments.new do |f| %>
    Name:<%= f.text_field :name %><br/>
    Email:<%= f.text_field  :email %><br/>
    Body:<%= f.text_area :content %><br/>
    <%= submit_tag "Comment" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我需要删除/删除/清理<script>..</script><style>..</style>标记.

其他选项是如果有任何脚本,样式标签,那么输入字段将被视为空.然后评论将不会被保存.

如何删除这些标签和这些标签内的代码?我怎样才能删除html标签和html标签内的内容?

小智 10

我一直在使用消毒剂来达到这个目的.它一直很好用.

为您的应用添加常量:

YourApp::SANITIZE_FILTER = {
  :remove_contents => ['script']
}
Run Code Online (Sandbox Code Playgroud)

然后你可以添加一个辅助方法:

 def sanitize_content(content)
   content = Sanitize.clean(content, YourApp::SANITIZE_FILTER)
 end
Run Code Online (Sandbox Code Playgroud)


Dog*_*ert 6

据我所知,Rails 3中没有任何东西可以做到这一点.使用消毒宝石.

添加gem 'sanitize'到您的Gemfile,然后运行bundle install.仅此一点就应该这样做.