0

私は自分のモデルの形でwysihtml5を使用しています:Post

投稿/_form.html.erb:

<%= f.text_area :content, id: "wysihtml5-textarea",
                          placeHolder: "Content" %>

結果をraw+として表示しsanitizeます。

show.html.erb:

<%= sanitize raw(@post.content), :tags => %w(b i u p br) %>

(私はb, i, u, p, and brタグのみを許可しています)。

これに関する問題は、上記以外の html タグ (b、i、u、p、および br) がまだテキスト領域に保存されていることです (ユーザーが編集をクリックすると、それらは引き続き表示されます)。ユーザーが送信をクリックした直後に削除したいと思います(WordPressのテキストエディターのように)。

助言がありますか?

編集:

私が試していること:

post.rb:

  before_save :remove_html_tags

  def remove_html_tags
    self.content.sanitized_allowed_tags.delete 'div'
  end
4

1 に答える 1

2

API ドキュメントを確認してください: http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

少し下にスクロールすると、おそらくこれが探しているものです。

class Application < Rails::Application
  config.after_initialize do
    ActionView::Base.sanitized_allowed_tags.delete 'div'
  end
end

更新:リソースが保存される直前にタグを削除する場合は、before_saveコールバックを使用してモデル レベルでこれを行うことができます。または、コントローラーで、#createリソースが保存される直前のアクションで。特定のタグを取り除きたい場合は、次#strip_tagsのように使用できます。

before_save do |post|
  post.content = strip_tags(post.content)
end

ただし、これは ActiveSupport のメソッドであるため、モデルにモジュールを含める必要があります。

`ActionView::Helpers::SanitizeHelper`
于 2012-10-21T12:34:07.250 に答える