LoginSignup
0
0

More than 5 years have passed since last update.

htmlタグを消去する方法&それをmailerのviewで使う方法

Last updated at Posted at 2016-06-10

管理者からユーザーに宿題を出す

管理者画面でタグを直打ち入力すると、ユーザー画面ではタグを認識して、いい感じで表示される実装。
直打ちしているので、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/該当ファイル.rbrm_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タグ以外の<>も消去されることになるのですが、管理者側の問題なので(管理者が気をつければいい)、今回はこのような実装にしました。
他にも良い実装方法をご存知の方がいれば教えて下さい!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0