###前提・実現したいこと
Ruby on rails にて野球のイベントサイトを制作しております。
その機能の一つとして、問い合わせフォーム(メールにて管理者に内容を送信できる)の実装を試みておりますが、
下記のエラーメッセージをどうしても解決することができません。何かアドバイス頂けないでしょうか?
具体的には、「index.html.erb」の問い合わせフォームに各項目を入力し、
「確認」ボタンを押すと、下記のエラーメッセージが表示されてしまいます。
画像はこちら(リンク内容)
ご教示の程、何卒よろしくお願い致します。
###発生している問題・エラーメッセージ
ActiveModel::ForbiddenAttributesError in InquiryController#confirm ActiveModel::ForbiddenAttributesError Extracted source (around line #14): def confirm # 入力値のチェック @inquiry = Inquiry.new(params[:inquiry]) if @inquiry.valid? # OK。確認画面を表示 render :action => 'confirm'
こちらもご確認下さい。 [エラー画面](https://gyazo.com/f36df9fefc91f48b3ea24c23cccf06aa)
###Views>inquiry>index.html.erb
ruby
1<%= form_for @inquiry, :url => inquiry_confirm_path do |f| %> 2 <div class="page-header"> 3 <h1>お問い合わせ</h1> 4 </div> 5 6 <% if @inquiry.errors.any? %> 7 <div class="alert alert-danger" role="alert"> 8 <strong>入力内容にエラーがあります</strong> 9 <ul> 10 <% @inquiry.errors.each do |attr, msg| %> 11 <li><%= msg %></li> 12 <% end %> 13 </ul> 14 </div> 15 <% end %> 16 17 <table class="table"> 18 <tr> 19 <th>名前<span class="text-danger">(必須)</span></th> 20 <td><%= f.text_field :name %></td> 21 </tr> 22 <tr> 23 <th>メールアドレス<span class="text-danger">(必須)</span></th> 24 <td><%= f.text_field :mailadress %></td> 25 </tr> 26 <tr> 27 <th>お問い合わせ内容</th> 28 <td><%= f.text_area :contents %></td> 29 </tr> 30 </table> 31 <%= f.submit '確認', class: 'btn btn-primary' %> 32<% end %>
###Views>inquiry>confirm.html.erb
ruby
1<div class="page-header"> 2 <h1>お問い合わせ</h1> 3</div> 4 5<%= form_for @inquiry, :url => inquiry_thanks_path do |f| %> 6 <table class="table"> 7 <tr> 8 <th>名前</th> 9 <td> 10 <%= f.hidden_field :name %> 11 <%= @inquiry.name %> 12 </td> 13 </tr> 14 <tr> 15 <th>メールアドレス</th> 16 <td> 17 <%= f.hidden_field :mailadress %> 18 <%= @inquiry.mailadress %> 19 </td> 20 </tr> 21 <tr> 22 <th>お問い合わせ内容</th> 23 <td> 24 <%= f.hidden_field :contents %> 25 <%= simple_format(@inquiry.contents) %> 26 </td> 27 </tr> 28 </table> 29 <%= f.submit '送信', :class => 'btn btn-primary' %> 30<% end %>
###Views>inquiry>thanks.html.erb
ruby
1<div class="page-header"> 2 <h1>お問い合わせ</h1> 3</div> 4<p> 5 お問い合わせいただきありがとうございました。 6</p>
###Controllers>concerns>inquiry_controller.rb
ruby
1class InquiryController < ApplicationController 2 3def inquiry_params 4 params.require(:inquiry).permit(:name,:mailadress,:contents,:team_name) 5end 6 7 def index 8 # 入力画面を表示 9 @inquiry = Inquiry.new 10 render :action => 'index' 11 end 12 def confirm 13 # 入力値のチェック 14 @inquiry = Inquiry.new(params[:inquiry]) 15 if @inquiry.valid? 16 # OK。確認画面を表示 17 render :action => 'confirm' 18 else 19 # NG。入力画面を再表示 20 render :action => 'index' 21 end 22 end 23 def thanks 24 # メール送信 25 @inquiry = Inquiry.new(params[:inquiry]) 26 InquiryMailer.received_email(@inquiry).deliver 27 28 # 完了画面を表示 29 render :action => 'thanks' 30 end 31end
###Models>concerns>inquiry.rb
ruby
1class Inquiry < ActiveRecord::Base 2 3class Inquiry 4include ActiveModel::Model 5attr_accessor :name, :mailadress, :content 6 validates :name, :presence => {:message => '名前を入力してください'} 7 validates :mailadress, :presence => {:message => 'メールアドレスを入力してください'} 8end 9 10end
###Config>locals>routes.rb
ruby
1Rails.application.routes.draw do 2 resources :layouts 3 get '/top' => 'home#top' 4 get '/inquiry' => 'inquiry#index' 5 post '/inquiry/confirm' => 'inquiry#confirm' 6 post '/inquiry/thanks' => 'inquiry#thanks' 7
どうぞ、よろしくお願い致します。
以上
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。