イベントを投稿できるアプリを作っているのですが、アクティブストレージに画像が保存されません。saveメソッドの後にparamsを確認するとimagesがpermitted: false>とエラーが起きていました。ストロングパラメーターにはカラムを記載していたのですがなぜか保存できません。
エラーメッセージ
=> <ActionController::Parameters {"authenticity_token"=>"7ay0zrbz8jex56DbPMn7C8m1brf+UbI0PBUiSL+oXt9Om0BAvPM4KBPTKyJ5YTwfyRO+d/8TMkBKedOjk1ge+g==", "events_tag"=><ActionController::Parameters {"name"=>"ああ", "explanation"=>"ああ", "volunteer"=>"あ", "tagname"=>"", "facility_id"=>"2", "scale_id"=>"2", "category_id"=>"2"} permitted: false>, "event"=>{"images"=>[#<ActionDispatch::Http::UploadedFile:0x00007feedaff57f0 @tempfile=#<Tempfile:/var/folders/_1/65g6nnw11m9bjd70qkczwzq80000gn/T/RackMultipart20201128-1516-1n6at44.jpeg>, @original_filename="ダウンロード.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"event[images][]\"; filename=\"\xE3\x82\xBF\xE3\x82\x99\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x88\xE3\x82\x99.jpeg\"\r\nContent-Type: image/jpeg\r\n">]}, "commit"=>"保存する", "controller"=>"events", "action"=>"create"} permitted: false>
event_model
ruby
1class Event < ApplicationRecord 2 extend ActiveHash::Associations::ActiveRecordExtensions 3 belongs_to :user 4 has_many_attached :images 5 belongs_to :facility 6 belongs_to :scale 7 belongs_to :category 8 has_many :event_tag_relations, dependent: :destroy 9 has_many :tags, through: :event_tag_relations, dependent: :destroy 10end 11
events_controller
1```ruby 2class EventsController < ApplicationController 3 def index 4 @events = Event.all 5 end 6 7 def new 8 @event = EventsTag.new 9 end 10 11 def create 12 13 @event = EventsTag.new(event_params) 14 if @event.valid? 15 16 @event.save 17 # binding.pry 18 redirect_to root_path 19 else 20 render :new 21 end 22 end 23 24 def search 25 return nil if params[:keyword] == "" 26 tag = Tag.where(['tagname LIKE ?', "%#{params[:keyword]}%"] ) 27 render json:{ keyword: tag } 28 end 29 30 def show 31 @event = Event.find(params[:id]) 32 end 33 34 def edit 35 @event = Event.find(params[:id]) 36 unless @event.user_id == current_user.id 37 redirect_to action: :index 38 end 39 end 40 41 def update 42 event = Event.find(params[:id]) 43 if event.update(event_params) 44 redirect_to event_path 45 else 46 render :show 47 end 48 end 49 50 def destroy 51 @event = Event.find(params[:id]) 52 if @event.destroy 53 redirect_to root_path 54 end 55 end 56 57 private 58 59 def event_params 60 params.require(:events_tag).permit(:name, :explanation, :facility_id, :scale_id, :category_id, :volunteer, :tagname, images: []).merge(user_id: current_user.id) 61 end
new.html
1```ruby 2<div class="field"> 3 <label class="label">画像</label> 4 <%= f.file_field :images, name: 'event[images][]', id: 'event_image', class:"select-box-image" %> 5 <div id="image-list"></div> 6 </div> 7```<%= f.file_field :images, name: 'event[images][]を 8<%= f.file_field :images, name: 'events_tag[images][]に変更後のエラー 9```ここに言語を入力 10ActiveModel::UnknownAttributeError in EventsController#create 11unknown attribute 'images' for EventsTag. 12Extracted source (around line #11): 139 1410 1511 1612 1713 1814 19 20 def create 21 22 @event = EventsTag.new(event_params) 23 binding.pry 24 if @event.valid? 25 #binding.pry 26
エラーメッセージは略さず訳さずそのままコピペで提示してください。
https://teratail.com/help/question-tips#questionTips3-4-2
あと一応、nameをevent[images][]とされていますが、どこで取得できているつもりなのかも補足願います。
ご指摘ありがとうございます。newアクションで生成したEventsTageモデルにimagesを配列で付与する為記載しました。しかし今回はEventsTagでインスタンスを生成したのでevents_tag[images][]に直しました。しかしimagesが定義されていないという別のエラーが発生しました
あなたの回答
tips
プレビュー