前提・実現したいこと
railsでwebアプリケーションを作成しています。
ストロングパラメーターの検証エラーを解決したいです。
発生している問題・エラーメッセージ
ActiveSupport::MessageVerifier::InvalidSignature
該当のソースコード
cards_controller.rb class CardsController < ApplicationController def index @cards = Card.all end def new @card_lists = CardList.all @point_lists = PointList.all @coupon_lists = CouponList.all @card = Card.new end def create @card = Card.new(card_params) if @card.save redirect_to user_cards_path(@card), notice: "カードを追加しました" else render "new" end end private def card_params params.require(:card).permit( :name, :address, :opening_hours, :closing_hours, :phone_num, :url, :image, :point_content, :coupon_content).merge(user_id: params[:user_id]) end end
createアクションの@card = Card.new(card_params)でエラーが起きています
cards/new.html.haml =render "layouts/header" .search .new-contents.row - @card_lists.each do |card_list| .content-card.col-lg-5 =image_tag card_list.image, class:"content-card__image" %ul.content-card__info %li.content-card__info__name =card_list.name - @point_lists.each do |point_list| %li.content-card__info__point =point_list.content - @coupon_lists.each do |coupon_list| %li.content-card__info__coupon =coupon_list.content =form_with model:@card, url: user_cards_url, method: :post, local: true do |f| - @card_lists.each do |card_list| =f.hidden_field :name, value: card_list.name =f.hidden_field :address, value: card_list.address =f.hidden_field :opening_hours, value: card_list.opening_hours =f.hidden_field :closing_hours, value: card_list.closing_hours =f.hidden_field :phone_num, value: card_list.phone_num =f.hidden_field :url, value: card_list.url =f.hidden_field :image, value: card_list.image - @point_lists.each do |point_list| =f.hidden_field :point_content, value: point_list.content - @coupon_lists.each do |coupon_list| =f.hidden_field :coupon_content, value: coupon_list.content = f.submit "追加", class: 'btn btn-success'
hidden_fieldを使ってformを作成しました。
cardsのマイグレーションファイル(1) class CreateCards < ActiveRecord::Migration[5.2] def change create_table :cards do |t| t.references :user, foreign_key: true t.string :name, null: false t.string :address, null: false t.time :opening_hours, null: false t.time :closing_hours, null: false t.string :phone_num, null: false t.text :url t.timestamps end end end
cardsのマイグレーションファイル(2) class AddContentToCards < ActiveRecord::Migration[5.2] def change add_column :cards, :point_content, :string add_column :cards, :coupon_content, :string end end
cardを新規作成したときのパラメータです Started POST "/users/1/cards" for ::1 at 2020-03-23 07:22:01 +0900 Processing by CardsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"ms9I2+wCDBTiSRLdcKSPNm1RRdqq632cKvcW0bZ9lGRfrcer0KAgWhvrZ6UfI3FLLYohIPq7z9EV5Ez5csi2qg==", "card"=>{"name"=>"久兵衛", "address"=>"東京", "opening_hours"=>"2000-01-01 11:00:00 UTC", "closing_hours"=>"2000-01-01 22:00:00 UTC", "phone_num"=>"9999999999", "url"=>"http://www.kyubey.jp/", "image"=>"#<ActiveStorage::Attached::One:0x00007f94b8e92498>", "point_content"=>"いか二貫", "coupon_content"=>"200円引き"}, "commit"=>"追加", "user_id"=>"1"} Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms)
試したこと
MessageVerifierについて調べました。
Cookieで改ざんのチェックに利用していて、検証をおこなっているとわかりました。
なのでauthenticate_tokenの検証でエラーになっていると思い、
下記の記事を参考に
ブラウザを閉じて、やり直しましたがうまくいきませんでした。
https://masamitsu-murase.blogspot.com/2014/06/rails-csrf.html
ご教授のほどよろしくお願いいたします
あなたの回答
tips
プレビュー