ActiveSupport::MessageVerifier::InvalidSignature のエラーが解決出来ません

実現したいこと

railsで宿泊管理アプリを作成しており、管理画面に登録した宿泊先の画像を表示したいです。

発生している問題・分からないこと

画像をactive storageで表示しており、デフォルト画像を表示することはできましたが保存すると表題のエラーにぶつかります。

エラーメッセージ

error

1ActiveSupport::MessageVerifier::InvalidSignature in RoomsController#create 2ActiveSupport::MessageVerifier::InvalidSignature 3Extracted source (around line #16): 414 515 616 717 818 919 10 11 12 def create 13 @room = current_user.rooms.build(room_params) 14 if @room.save 15 redirect_to listing_room_path(@room), notice: "保存完了" 16 else 17

該当のソースコード

new.html.erb

1<h1>Rooms#new</h1> 2<p>Find me in app/views/rooms/new.html.erb</p> 3 4<div class="container"> 5 <div class="card mt-4"> 6 <div class="card-body"> 7 <h4 class="mt-4 mb-4"><b>部屋の新規登録</b></h4> 8 <%= form_for @room do |f| %> 9 <div class="row mb-4"> 10 <div class="col-md-4"> 11 <div class="mb-2"> 12 <label>施設名</label> 13 <%= f.text_field :r_name, 14 id: "r_name", class: "form-control" %> 15 </div> 16 </div> 17 <div class="col-md-4"> 18 <div class="mb-2"> 19 <label>写真</label> 20 <%= image_tag room_url(@room), :size => '150x100', class: "img-fluid img-thumbnail rounded-pill" %> 21 <h4 style="margin-left: 5.5rem;"></h4> 22 23 24 <button class="btn btn-info text-light w-100" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1" aria-expanded="false" aria-controls="collapse1"> 25 <i class="fa-solid fa-cloud-arrow-up"></i>アバター画像アップロード 26 </button> 27 <div class="collapse" id="collapse1"> 28 <div class="card card-body"> 29 <%= form_for :room, url: rooms_url(@room), action: :update, method: :post do |f| %> 30 <%= f.file_field :r_photo, class: "input-group-text", onchange: "this.form.submit();" %> 31 <% end %> 32 </div> 33 34 </div> 35 </div> 36 </div> 37 <div class="row mb-4"> 38 <div class="col-md-4"> 39 <div class="mb-2"> 40 <label>紹介</label> 41 <%= f.text_area :r_self, 42 id: "r_self", class: "form-control" %> 43 </div> 44 </div> 45 <div class="col-md-4"> 46 <div class="mb-2"> 47 <label>料金</label> 48 <%= f.text_field :r_price, 49 id: "r_price", class: "form-control" %> 50 </div> 51 </div> 52 <div class="col-md-4"> 53 <div class="mb-2"> 54 <label>作成日</label> 55 <%= f.date_field :r_create, 56 id: "r_create", class: "form-control" %> 57 </div> 58 </div> 59 <div class="col-md-4"> 60 <div class="mb-2"> 61 <label>住所</label> 62 <%= f.text_field :r_address, 63 id: "r_address", class: "form-control" %> 64 </div> 65 </div> 66 <div class="col-md-4"> 67 <div class="mb-2"> 68 <label>宿泊可能人数</label> 69 <%= f.text_field :people, 70 id: "people", class: "form-control" %> 71 </div> 72 </div> 73 </div> 74 <%= f.submit "登録する", class: "btn btn-danger w-100" %> 75 <% end %> 76 </div> 77 </div> 78</div>

application_helper.rb

1module ApplicationHelper 2 def user_url(user) 3 if user.photo.attached? 4 url_for(user.photo) 5 else 6 ActionController::Base.helpers.asset_path('default_icon.png') 7 end 8 9 end 10 11 def room_url(room) 12 if room.r_photo.attached? 13 url_for(room.r_photo) 14 else 15 ActionController::Base.helpers.asset_path('default_room.png') 16 end 17 18 end 19end

rooms_controller.rb

1class RoomsController < ApplicationController 2 before_action :set_room, except: [:index, :new, :create] 3 before_action :authenticate_user!, except: [:show] 4 protect_from_forgery except: [:upload_photo] 5 before_action :is_authorised, only: [:listing, :pricing, :description, :photo_upload, :amenities, :location, :update] 6 7 def index 8 @rooms = Room.all 9 end 10 11 def new 12 @room = current_user.rooms.build 13 end 14 15 def create 16 @room = current_user.rooms.build(room_params) 17 if @room.save 18 redirect_to listing_room_path(@room), notice: "保存完了" 19 else 20 flash[:alert] = "問題" 21 render :new 22 end 23 end 24 25 def show 26 @photos = @room.photos 27 @i = 0 28 @guest_reviews = @room.guest_reviews 29 end 30 31 def listing 32 end 33 34 def pricing 35 end 36 37 def description 38 end 39 40 def people 41 end 42 43 def photo_upload 44 end 45 46 def amenities 47 end 48 49 def location 50 end 51 52 def update 53 new_params = room_params 54 new_params = room_params.merge(active: true) if is_ready_room 55 56 if @room.update(new_params) 57 flash[:notice] = "保存完了" 58 else 59 flash[:alert] = "問題発生" 60 end 61 redirect_back(fallback_location: request.referer) 62 end 63 64 def upload_photo 65 @room.photos.attach(params[:file]) 66 render json: { success: true } 67 end 68 def delete_photo 69 @image = ActiveStorage::Attachment.find(params[:photo_id]) 70 @image.purge 71 redirect_to photo_upload_room_path(@room) 72 end 73 def preload 74 today = Date.today 75 reservations = @room.reservations.where("start_date >= ? OR end_date >= ?", today, today) 76 render json: reservations 77 end 78 79 def preview 80 start_date = Date.parse(params[:start_date]) 81 end_date = Date.parse(params[:end_date]) 82 output = {conflict: is_conflict(start_date, end_date, @room)} 83 render json: output 84 end 85 86 private 87 def set_room 88 @room = Room.find(params[:id]) 89 end 90 def room_params 91 params.require(:room).permit(:r_name, :r_photo, :r_self, :r_price, :r_create, :r_address, :people) 92 end 93 def is_authorised 94 redirect_to root_path, alert: "権限がありません。" unless current_user.id == @room.user_id 95 end 96 97 def is_ready_room 98 !@room.r_price.blank? && !@room.r_name.blank? && !@room.r_photo.blank? && !@room.r_address.blank? && !@room.people.blank? 99 end 100 def is_conflict(start_date, end_date, room) 101 check = room.reservations.where("? < start_date AND end_date < ?", start_date, end_date) 102 check.size > 0? true : false 103 end 104end 105

試したこと・調べたこと

上記の詳細・結果

has_many_attached の表記抜け、ストロングパラメータの設定忘れなど確認しましたが、問題ありませんでした。

補足

特になし

コメントを投稿

0 コメント