前提・実現したいこと
以前の続きです。
https://teratail.com/questions/256247
Railsで確認画面を表示するお問い合わせページを作成しています。
index(情報登録画面)→ confirm(内容確認画面)→ create(送信完了画面)
という流れで実装しております。
先日と少しコードを変えて実装してみたところ表題のエラーが出て躓いてしまったので、皆様のお力をお借りしたいです。
index→confirmへページ遷移する際にこのエラーが表示されます。
発生している問題・エラーメッセージ
ActionController::ParameterMissing in ContactsController#confirm param is missing or the value is empty: contact private def contact_params params.require(:contact).permit(:name, :email, :text) end end
該当のソースコード
contacts_controller.rb
ruby
1class ContactsController < ApplicationController 2 def index 3 @contact = Contact.new 4 end 5 6 def confirm 7 @contact = Contact.new(contact_params) 8 render :index if @contact.invalid? 9 end 10 11 def create 12 @contact = Contact.new(contact_params) 13 14 if params[:back] 15 render :index 16 return 17 end 18 19 if params[:post] 20 @contact.save 21 return 22 end 23 end 24 25 private 26 def contact_params 27 params.require(:contact).permit(:name, :email, :text) 28 end 29end 30
index.html.erb
erb
1<%= form_with model: @contact, local: true, url: {action: 'confirm'} do |form| %> 2 <h2>お問い合わせ</h2> 3 <%= form.label :name, "お名前" %> 4 <%= form.text_field :name, value: @contact.name, name: "name", class: "contact-input", placeholder:"〇〇 〇〇" %> 5 <%= form.label :email, "メールアドレス" %> 6 <%= form.text_field :email, value: @contact.email, name: "email", class: "contact-input",placeholder:"xxx@xxx.com" %> 7 <%= form.label :text, "お問い合わせ内容" %> 8 <%= form.text_area :text, value: @contact.text, name: "text", class: "contact-textarea", placeholder:"内容をご入力ください" %> 9 <%= form.submit "確認", class: "mod-button-02", id: "contact-submit" %> 10<% end %>
confirm.html.erb
erb
1<%= form_for @contact, url: contact_complete_path do |form| %> 2 <h2 class="mod-title-01">内容確認</h2> 3 <%= form.label :name, "お名前" %> 4 <%= @contact.name %> 5 <%= form.hidden_field :name, value: @contact.name, readonly: true %> 6 <%= form.label :email, "メールアドレス" %> 7 <%= @contact.email %> 8 <%= form.hidden_field :email, value: @contact.email, readonly: true %> 9 <%= form.label :text, "お問い合わせ内容" %></th> 10 <%= @contact.text %> 11 <%= form.hidden_field :text, value: @contact.text, readonly: true %> 12 <%= form.submit '戻る', name: 'back', class: "mod-button-01" %> 13 <%= form.submit '送信', name: 'post', class: "mod-button-02" %> 14<% end %>
試したこと
contacts_controller.rb
ruby
1class ContactsController < ApplicationController 2 3#~中略〜 4 5 private 6 def contact_params 7 params.permit(:name, :email, :text) 8 end 9end
のように、require(:contact)
を外したところエラーは解決しますが、DBに情報が保存できません。
補足情報(FW/ツールのバージョンなど)
rails -v 5.2.1/ruby -v 2.5.1です。
DBに追加したカラムは以下の通りです。
t.string :name
t.string :email
t.text :text
その他必要な情報があれば教えてください。
よろしくお願いします!
あなたの回答
tips
プレビュー