管理者からユーザーに宿題を出す
管理者画面でタグを直打ち入力すると、ユーザー画面ではタグを認識して、いい感じで表示される実装。
直打ちしているので、strig_tags
メソッドは適用されない。(エディタのgemを使っている場合はこのメソッドが使える?)
しかし、mailerでメール送信をしてもタグを認識しないので、メールではタグを消去したい場合。
viewなので、application_helperに<>
と<>
で囲んだ文字を空文字にする正規表現を記述。
application_helper.rb
module ApplicationHelper
def rm_html_tag(str)
str.sub!(/<[^<>]*>/,"") while /<[^<>]*>/ =~ str
str
end
end
views/mailers/該当ファイル.rb
でrm_html_tag(str)
でいけるじゃんと思ったのですが、そんな「アクションがないよ」と怒られます。
mailerでapplication_helperを呼び出す必要があります。
mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
add_template_helper(ApplicationHelper)
end
これで晴れてmailerのviewから定義したrm_html_tag(str)
メソッドを呼び出すことができます。
views/activity_mailer/_hoge.text.erb
<%= rm_html_tag(object.body) %>
これで<>
と<>
で囲まれた文字はすべて空文字に変換される=表示されなくなります。
htmlタグ=<>
は消去されますが、htmlタグ以外の<>
も消去されることになるのですが、管理者側の問題なので(管理者が気をつければいい)、今回はこのような実装にしました。
他にも良い実装方法をご存知の方がいれば教えて下さい!