Ruby on Rails: как я могу удалить / удалить / дезинфицировать скрипт, теги стиля из текстового ввода? - PullRequest
2 голосов
/ 07 декабря 2011
<%= 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 %>

Мне нужно удалить / удалить / очистить теги <script>..</script> и <style>..</style>.

Другой вариант - если есть какой-либо скрипт, теги стиля, тогда поле ввода будет считаться пустым.И тогда комментарий не будет сохранен.

Как я могу удалить эти теги и код внутри этих тегов?И как я могу удалить HTML-теги тоже и содержимое внутри HTML-тегов?

Ответы [ 3 ]

9 голосов
/ 09 декабря 2011

Я использовал sanitize для этой конкретной цели. Работает отлично.

Добавьте константу в ваше приложение:

YourApp::SANITIZE_FILTER = {
  :remove_contents => ['script']
}

Затем вы можете добавить вспомогательный метод:

 def sanitize_content(content)
   content = Sanitize.clean(content, YourApp::SANITIZE_FILTER)
 end
6 голосов
/ 07 декабря 2011

Насколько я знаю, ничто в Rails 3 не может этого сделать. Используйте дезинфицирующее средство драгоценный камень.

Добавьте gem 'sanitize' в ваш Gemfile и запустите bundle install. Это само по себе должно сделать это.

2 голосов
/ 07 декабря 2011

Использование SanitizeHelper

string = '<span id="span_is"><br><br><u><i>Hi</i></u></span>'
strip_tags(string) #This Will give you "Hi"
...