前提・実現したいこと
Ruby on Railsにて画像や動画をメッセージやタイトルと共に投稿するアプリケーションを作成中です。
画像データの投稿をできるようにしたいです。
発生している問題・エラーメッセージ
投稿機能、画像の複数データ投稿実装完了後 タグ付け機能を実装するため投稿機能とタグ付け機能で Formオブジェクトを用いて実装したところタイトルやメッセージは投稿できたが 画像データが保存できませんでした。 追記 現状なぜか画像1つは保存できましたが 2つめからは保存されません 画像データはActiveStorageを用いてDBへ保存する予定です
params => <ActionController::Parameters {"authenticity_token"=>"tw/q0vYN6CD3eHIVdpxGkUWCNQINctf3lIsnvsrS+JuSrJedRv9QRHXBU6yj6PnKjkgPEIkWc/6r3POKnVThrA==", "message_tag"=>{"title"=>"imgtest", "message"=>"imgimg", "whom"=>"imgimgimg", "open_plan(1i)"=>"2025", "open_plan(2i)"=>"5", "open_plan(3i)"=>"5", "images"=>[#<ActionDispatch::Http::UploadedFile:0x00007f8dccf5cd30 @tempfile=#<Tempfile:/var/folders/pg/6dn2c_091hb4pfr45vz6w9fr0000gn/T/RackMultipart20210113-12924-vajy1.jpg>, @original_filename="snowboard_1542357277.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"message_tag[images][]\"; filename=\"snowboard_1542357277.jpg\"\r\nContent-Type: image/jpeg\r\n">], "name"=>"imgtest"}, "message"=>{"images"=>[#<ActionDispatch::Http::UploadedFile:0x00007f8dccf5ca88 @tempfile=#<Tempfile:/var/folders/pg/6dn2c_091hb4pfr45vz6w9fr0000gn/T/RackMultipart20210113-12924-96ks7s.jpg>, @original_filename="TimeCapsule2.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"message[images][]\"; filename=\"TimeCapsule2.jpg\"\r\nContent-Type: image/jpeg\r\n">]}, "commit"=>"想いを残す", "controller"=>"messages", "action"=>"create"} permitted: false> message_params => <ActionController::Parameters {"title"=>"imgtest", "whom"=>"imgimgimg", "message"=>"imgimg", "open_plan(1i)"=>"2025", "open_plan(2i)"=>"5", "open_plan(3i)"=>"5", "name"=>"imgtest", "images"=>[#<ActionDispatch::Http::UploadedFile:0x00007f8dccf5cd30 @tempfile=#<Tempfile:/var/folders/pg/6dn2c_091hb4pfr45vz6w9fr0000gn/T/RackMultipart20210113-12924-vajy1.jpg>, @original_filename="snowboard_1542357277.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"message_tag[images][]\"; filename=\"snowboard_1542357277.jpg\"\r\nContent-Type: image/jpeg\r\n">], "user_id"=>1} permitted: true>
該当のソースコード
message.rb
tag.rb
1class Tag < ApplicationRecord 2 has_many :messages, through: :message_tag_forms 3 has_many :message_tag_forms 4 5 validates :name, uniqueness: true 6end
message_tag.rb
messages_controller.rb
new.html.erb
1<div class="new-message"> 2 <h1>残したい想い</h1> 3 <%= form_with model: @message, url: messages_path, local: true do |f| %> 4 <%= render 'shared/error_messages', model: f.object %> 5 <div class="posting-form"> 6 <div class="form"> 7 タイトル 8 <span class="indispensable">必須</span> 9 </div> 10 <%= f.text_field :title, class:"form-title", id:"form-title", placeholder:"タイトル名(必須 50文字以内)", maxlength:"50" %> 11 <div class="form"> 12 メッセージ 13 <span class="indispensable">必須</span> 14 </div> 15 <%= f.text_area :message, class:"form-message", id:"form-message", placeholder:"メッセージ内容(必須 200文字以内)例)20年後の子供の誕生日に見て欲しい動画です。" ,rows:"5", maxlength:"200" %> 16 <div class="form"> 17 誰に対してか 18 <span class="indispensable">必須</span> 19 </div> 20 <%= f.text_field :whom, class:"form-whom", id:"form-whom", placeholder:"誰に宛てたものか(必須 50文字以内)例)20年後の子どもたちへ", maxlength:"50" %> 21 <div class="form"> 22 開封予定日 23 <span class="indispensable">必須</span> 24 </div> 25 <div class="form-open-plan"> 26 <%= raw sprintf( 27 f.date_select( 28 :open_plan, 29 class: 'open-plan-object', 30 use_month_numbers: true, 31 prompt:'--', 32 start_year: (Time.now.year), 33 end_year: (Time.now.year + 100), 34 date_separator: '%s'), 35 "<p> 年 </p>", "<p> 月 </p>") + "<p> 日 </p>" %> 36 </div> 37 <div class="form-caution"> 38 ※※※画像か動画どちらか1つの投稿にしてください。※※※ 39 </div> 40 <div class="image-form"> 41 <div class="form"> 42 届ける想い(画像) 43 </div> 44 <div class="click-upload"> 45 <p>クリックしてファイルをアップロード</p> 46 <%= f.file_field :images, name: 'message_tag[images][]', id:"form-image" %> 47 <div id="image-list"></div> 48 </div> 49 </div> 50 <div class="video-form"> 51 <div class="form"> 52 届ける想い(動画) 53 </div> 54 <div class="click-upload"> 55 <p>クリックしてファイルをアップロード</p> 56 <%= f.file_field :video, id:"form-video" %> 57 </div> 58 </div> 59 <div class="tag-form"> 60 タグ 61 </div> 62 <%= f.text_field :name, id:"form-tag", placeholder:"誕生日", maxlength:"20"%> 63 </div> 64 <div class="message-btn-contents"> 65 <%= f.submit "想いを残す" ,class:"message-btn" %> 66 <%= link_to 'もどる', root_path, class:"back-btn" %> 67 </div> 68 <% end %> 69 70</div>
あなたの回答
tips
プレビュー