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