前提・実現したいこと
Ruby on Railsを用いて保育園との連絡帳のようなシステムを作っています。
新規に連絡帳機能を作成する実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
フォームで各項目を入力し、連絡帳を作成しようとすると下記のエラーメッセージが表示されます。
ruby
1ActiveSupport::MessageVerifier::InvalidSignature 2 3【該当箇所】 4def create 5 @contact = Contact.create(contact_params) #この部分がハイライトされています 6 if @contact.save 7 redirect_to root_path 8 else
Gyazo画像
該当のソースコード
ruby
1【controllers/contacts_controller.rb】 ※必要と思われる箇所のみを抜粋しています 2 3 def new 4 @contact = Contact.new 5 end 6 7 def create 8 @contact = Contact.create(contact_params) 9 if @contact.save 10 redirect_to root_path 11 else 12 render new_contact_path 13 end 14 end 15 16 17private 18def contact_params 19 params.require(:contact).permit(:image, :group_id, :last_name_c_j, :first_name_c_j, :last_name_c_k, :first_name_c_k ).merge(parent_user_id: current_parent_user.id) 20end
ruby
1【models/contact.rb】 ※必要と思われる箇所のみを抜粋しています 2 3belongs_to :parent_user 4has_one_attached :image
ruby
1【views/contacts/new.html.erb】 2 3<div class="form__wrapper"> 4 5 <%= form_with(model: @contact, local: true) do |f| %> 6 <%= render 'error_messages', model: f.object %> 7 <%= render 'form', model: f.object , locals: { contact: @contact } %> 8 <% end %> 9 10</div> 11
ruby
1【views/contacts/_error_messages.html.erb】 2 3<% if model.errors.any? %> 4 <div class="error-alert"> 5 <ul> 6 <% model.errors.full_messages.each do |message| %> 7 <li class='error-message'><%= message %></li> 8 <% end %> 9 </ul> 10 </div> 11<% end %> 12
ruby
1【views/contacts/_form.html.erb】 2 3<div class="form__wrapper"> 4 <h2 class="page-heading">新規連絡帳の作成ページ</h2> 5 6 <%= form_with(model: @contact, local: true) do |f| %> 7 8 <%= render 'error_messages', model: f.object %> 9 10 <div class="field"> 11 <%= f.label :group_id, "お子さんの組" %><br /> 12 <%= f.collection_select(:group_id, Group.all, :id, :name, {}, {class:"select-box", id:"class"}) %> 13 </div> 14 15 <div class="field"> 16 <%= f.label :last_name_c_j, "お子さんの名前(名字)" %><br /> 17 <%= f.text_field :last_name_c_j %> 18 </div> 19 20 <div class="field"> 21 <%= f.label :first_name_c_j, "お子さんの名前(名前)" %><br /> 22 <%= f.text_field :first_name_c_j, class: :form__text %> 23 </div> 24 25 <div class="field"> 26 <%= f.label :last_name_c_k, "お子さんの名字(カナ)" %><br /> 27 <%= f.text_field :last_name_c_k %> 28 </div> 29 30 <div class="field"> 31 <%= f.label :first_name_c_k, "お子さんの名前(カナ)" %><br /> 32 <%= f.text_field :first_name_c_k, class: :form__text %> 33 </div> 34 35 <div class="field"> 36 <%= f.label :image, "お子さんの写真" %><br /> 37 <%= f.file_field :image %> 38 </div> 39 40 41 <div class="actions"> 42 <%= f.submit "連絡帳を作成する", class: :form__btn %> 43 </div> 44<% end %> 45 46 47 48 49</div> 50
試したこと
pry-rails導入しparamsを確認しました
ruby
1 43: def create 2 => 44: binding.pry 3 45: @contact = Contact.create(contact_params) 4 46: if @contact.save 5 47: redirect_to root_path 6 48: else 7 49: render new_contact_path 8 50: end 9 51: end 10 11[1] pry(#<ContactsController>)> params 12=> <ActionController::Parameters {"authenticity_token"=>"XXXXXXXXXXXXXXXXXXXXXXXXX==", "contact"=>{"group_id"=>"2", "last_name_c_j"=>"子供名字いち", "first_name_c_j"=>"子供名前いち", "last_name_c_k"=>"コドモミョウジイチ", "first_name_c_k"=>"コドモナマエイチ", "image"=>"child_1.jpg"}, "commit"=>"保存する", "controller"=>"contacts", "action"=>"create"} permitted: false> 13[2] pry(#<ContactsController>)> contact_params 14=> <ActionController::Parameters {"image"=>"child_1.jpg", "group_id"=>"2", "last_name_c_j"=>"子供名字いち", "first_name_c_j"=>"子供名前いち", "last_name_c_k"=>"コドモミョウジイチ", "first_name_c_k"=>"コドモナマエイチ", "parent_user_id"=>1} permitted: true> 15[3] pry(#<ContactsController>)> @contact 16=> nil
記述ミスがないかの確認をしました
ストロングパラメータなどのカラム名に記載ミスがないかなどの確認を行いました。
考察
エラーメッセージからActiveStorageが原因か推測し、様々な検索を行ったのですが解決方法を見つけることができませんでした。
補足情報(FW/ツールのバージョンなど)
- rails (6.0.0)
- active storage (6.0.3.5)
学習を始めたばかりの初学者のため、質問に不備などありましたら申し訳ございません。
また、必要な項目が抜けているなどありましたら、お手数ですが、ご指摘いただけると助かります。
あなたの回答
tips
プレビュー