前提・実現したいこと
Ruby on Railsでアクションメーラーを用いて問合せフォームを実装したいと考えています。
発生している問題・エラーメッセージ
問い合わせフォームにメールアドレス・問い合わせ内容を入力し送信ボタンをクリックしたところ、
下記画像の通り、Routingエラーとなってしまいました。
解決策をご教示いただきたくお願いいたします。
Routes.rbで正しくルーティングが記載されているか、該当のコントローラに記載ミスが無いか何度も見直しましたが、
解決策が見出せず質問させていただきました。
不足情報が無いように記載しているつもりではございますが、万が一不足情報ございましたらお手数ですがご教示ください。
Routes.rb
Rails.application.routes.draw do root to: "toppages#index" get "signup", to: "users#new" resources :users, only: [:show, :new, :create] get "login", to: "sessions#new" post "login", to: "sessions#create" delete "logout", to: "sessions#destroy" get "housework_list", to: "houseworks#index" resources :houseworks, only: [:new, :create, :destroy] resources :housework_schedules, only: [:new, :create, :destroy] resources :relationships, only: [:create, :update, :destroy] resources :contacts, only: [:new, :create] end
views/toppages/index.html.erb
問合せフォームのソースコードはこちらに"contacts/contact/form"としてrenderしています。
<div class="container"> <div class="row"> <div class="col-sm-6 offset-3 mb-5"> <h1 class="text-center pb-5">お問い合わせ</h1> <%= render "contacts/contact_form", contact: @contact %> </div> </div> </div>
views/contacts/_contact_form.html.erb
問合せフォームのソースコードになります。
<%= form_with(model: contact, local: true) do |f| %> <div class="form-group"> <%= f.label :email, '返信先メールアドレス' %> <%= f.text_field :email, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :message, 'お問い合わせ内容' %> <%= f.text_area :message, size: '10x10', class: 'form-control' %> </div> <%= f.submit '送信', class: "btn btn-primary btn-block" %> <% end %>
###toppages_controller
toppageのindex.html.erbにrenderしているため、toppages#indexに@contactとして定義しています。
class ToppagesController < ApplicationController def index if logged_in? 省略 else @contact = Contact.new end end end
###app/mailers/application_mailer.rb
こちらはデフォルトのままで変更していません。
class ApplicationMailer < ActionMailer::Base default from: 'from@example.com' layout 'mailer' end
###app/mailers/contact_mailer.rb
herokuでheroku config:set ENV_MAIL(環境変数)=値
は実行済みです。
class ContactMailer < ApplicationMailer def contact_mail(contact) @contact = contact mail to: ENV_MAIL["MAIL"], subject: "お問い合わせがありました" end end
###views/contact_mailer/contact_mail.html.erb
<h3>お問い合わせ内容</h3> ============================================================ <p>email: <%= @contact.email %></p> <p>content: <%= @contact.message %></p> ============================================================
###contacts_controller
class ContactsController < ApplicationController def create @contact = Contact.new(contact_params) if @contact.save ContactMailer.contact_mail(@contact).deliver flash[:success] = "お問い合わせを受け付けました" redirect_to root_path else render :new end end private def contact_params params.require(:contact).permit(:email, :message) end end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/25 03:23
2019/12/25 08:01 編集
2019/12/25 08:32 編集
2019/12/25 09:37
2019/12/25 16:36
2019/12/25 20:36
2019/12/25 20:45
2019/12/26 07:10
2019/12/26 07:54
2019/12/26 09:21 編集
2019/12/26 09:12
2019/12/26 09:14
2019/12/26 09:23
2019/12/26 09:40
2019/12/26 09:52
2019/12/26 10:02
2019/12/26 16:11
2019/12/27 03:38
2019/12/27 08:07
2019/12/27 08:12
2019/12/27 11:47
2019/12/27 11:52
2019/12/27 13:04
2019/12/27 13:18
2019/12/27 13:30
2019/12/27 14:10
2019/12/28 13:49 編集
2019/12/28 21:43
2020/01/01 14:19 編集
2019/12/29 08:10