今作っているサービスに、お問い合わせ機能を作ることにしました。
letter opnerというgemがあることを知り、なんだか極めて楽そうだと思ったので(途中エラーが出ましたが解決)使ってみることにしました。
色々な記事をみていると、意外と「ここは当たり前にできてますよね」前提で省かれているところが有って(私が気がつかなかっただけ)結構困ったので、自分の備忘録もかねて書いておきます。
環境
ruby 2.6.6
Rails 6.0.3.3
実装
group :development do
gem 'letter_opener_web'
end
bundle installします。
scaffoldを使って一気に作ります。
$ rails g scaffold Contact name:string email:string content:text
rails db:migrate
します。
ローカル環境で /contacts/newにアクセスすると
こんな簡易の入力画面ができていたらまずはOKです。
Action Mailerを作ります。
$ bin/rails g mailer ContactMailer
送信機能の実装をします。
class ContactMailer < ApplicationMailer
def contact_mail(contact)
@contact = contact
mail to: "自分のメールアドレス",subject: "confirmation"
end
end
この記事を下書き状態にしてて忘れていました。
もしかしたら何か抜けてるかもしれない。。
いざ、コンタクトフォームから送信すると、
このようなメールがちゃんと作れましたよ、という画面に切り替わります。
letter_opnerの送信確認
http://localhost:3000/letter_opener
でアクセスできます。こんな画面が表示されて、送信されたメール内容の通知があればメーラーがちゃんと動いてますよ、ということ。
この後本番環境で実装してなかったな!と思い、sendgrid使おうとしたら、sendgridのアドオンを追加しても、ページにアクセスできない問題が。
どうやらsendgridの新規登録をして、ログイン情報を得てからでないと設定ができない模様。(年明け持ち越し確定)
参考にさせていただいた記事
https://papa-programing.jp/rails-contacts-function/
むしろこちらの記事のが親切です、、色々自分が見落としていた部分も!