質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

10083閲覧

Template is missingを解決できません

s.k

総合スコア423

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2017/02/28 13:26

編集2017/02/28 14:17

###前提・実現したいこと
お問い合わせ機能を実装したいです。

###発生している問題・エラーメッセージ

ActionView::MissingTemplate (Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/ubuntu/workspace/app/views" * "/usr/local/rvm/gems/ruby-2.3.0/gems/administrate-0.3.0/app/views" * "/usr/local/rvm/gems/ruby-2.3.0/gems/kaminari-0.17.0/app/views" * "/usr/local/rvm/gems/ruby-2.3.0/gems/devise-4.2.0/app/views" ): app/mailers/mail_sender_mailer.rb:11:in `inquiry' app/controllers/contacts_controller.rb:8:in `create' Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb within rescues/layout Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_source.html.erb Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (5.6ms) Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.4ms) Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.6ms) Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb within rescues/layout (34.2ms)

前も同じ実装をしたのですが、今回は何が原因なのかわかりません。。。

###該当のソースコード

【mail_sender_mailer.rb】

class MailSenderMailer < ApplicationMailer # Subject can be set in your I18n file at config/locales/en.yml # with the following lookup: # # en.mail_sender_mailer.inquiry.subject # def inquiry(contact) @contact = contact mail to: "メール" end end

【contacts_controller.rb】

class ContactsController < ApplicationController def new @contact = Contact.new end def create @contact = Contact.new(contact_params) MailSenderMailer.inquiry(@contact).deliver respond_to do |format| if @contact.save format.html { redirect_to root_path, notice: 'お問い合わせメールが送信されました。' } else format.html { render action: 'new' } end end end private def contact_params params.require(:contact).permit(:email, :name, :message) end end

【mail_sender_mailer/inquiry.html.erb】

<p>Webサイトからお問い合わせがありました。</p> -------------------------- Name: <%= @contact.name %><br> Email: <%= @contact.email %><br> Message: <%= @contact.message %> --------------------------

【mail_sender_mailer/inquiry.text.erb】

Webサイトからお問い合わせがありました。 -------------------------- Name: <%= @contact.name %> Email: <%= @contact.email %> Message: <%= @contact.message %> --------------------------

【route.rb】

resource :contacts, only: [:new, :create]

###補足情報(言語/FW/ツール等のバージョンなど)
こちらを参考に作成しました。

##追記

【application.rb】

# config.i18n.default_locale = :de

【locale】

devise.en.yml en.yml

【エラー内容】

Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/ubuntu/workspace/app/views" * "/usr/local/rvm/gems/ruby-2.3.0/gems/administrate-0.3.0/app/views" * "/usr/local/rvm/gems/ruby-2.3.0/gems/kaminari-0.17.0/app/views" * "/usr/local/rvm/gems/ruby-2.3.0/gems/devise-4.2.0/app/views"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

config/application.rb の

config.i18n.default_locale = :"ここはなんて書いてありますか?"

あと、config/locales/にはどのようなファイルが入ってますか?

投稿2017/02/28 14:02

hiyashikyuri

総合スコア388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s.k

2017/02/28 14:07

ありがとうございます! 追記しました!
hiyashikyuri

2017/02/28 14:13

念のために # config.i18n.default_locale = :de ↓config.i18n.default_locale = :en に変更してサーバーをリスタートしてください あと、createメソッドですが、MailSenderは if saveの中で書いたほうがいいです もし、エラーが起こったり必要な情報がなかった場合でもメールが送信されてしまうので、 このようにしたほうが誤送信等も防げるかと思います def create @contact = Contact.new(contact_params) respond_to do |format| if @contact.save       MailSenderMailer.inquiry(@contact).deliver format.html { redirect_to root_path, notice: 'お問い合わせメールが送信されました。' } else format.html { render action: 'new' } end end end
s.k

2017/02/28 14:17

実行したところ、追記のようなエラーが出ました!
s.k

2017/02/28 14:32

あ、いけました! いただいた情報のファイルを追加したらいけました。 届いたメールはmailer.html.erbの内容ではなく、inquiry.text.erbのものでした! 原因はなんなんでしょう。。。
s.k

2017/02/28 14:34

知らないうちに削除していたんですかね。。。
hiyashikyuri

2017/02/28 14:36 編集

無事できて何よりです! ただ、mailer.html.erbを追加して送信できているなら、inquiry.html.erbだと思うのですが。。。 もし時間があれば、inquiry.text.erbを削除して試して見るなどしてみてください〜
s.k

2017/02/28 14:40

わかりました! ご丁寧にありがとうございます! 勉強させていただきました^ ^
guest

0

テンプレートがないみたいなこと言ってる気がしますね
layouts/mailer←ここのディレクトリの中にviewファイルを作ってあげたら良い気がしますね
外れてたらすいません

投稿2017/02/28 13:51

drizzing20

総合スコア363

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s.k

2017/02/28 13:56

試しましたが、解決しませんでした(T ^ T)
drizzing20

2017/02/28 14:23

なるほど、困っちゃいましたね https://railsguides.jp/action_mailer_basics.html ↑の2.1で作成されているファイルみたいな構図で作られてると思うんですけど、参考サイトと同じ階層に作られているか、アクション名とviewの名前は違っていないかを確認してみてください。 あと、自分の方で調べてて、わかったのですが layout 'mailer'←こんなコードが入ってたりするとテンプレートがないときにエラー起こすらしいですね
s.k

2017/02/28 14:33

app/views/layouts/mailer.html.erbを作成し <html> <body> <%= yield %> </body> </html> を記入したら解決できました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問