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