Ruby on Railsで画像を投稿できる機能を作ったのですが複数の画像が投稿できません。
一枚だけなら投稿できるのですがmultiple: true
を付け複数枚を選択して投稿すると一枚も投稿されなくなってしまいます。
posts_control.rb
Ruby
1 def new 2 @post = Post.new 3 end 4 def create 5 @post = Post.new(post_params) 6 if @post.save 7 8 flash[:notice] = "投稿を送信しました。" 9 redirect_back(fallback_location: root_path) 10 else 11 redirect_to new_post_path 12 flash[:alert] = "投稿に失敗しました。" 13 end 14 end
posts.rb
class Post < ApplicationRecord default_scope -> { order(created_at: :desc) } belongs_to :user validates :text, length: { maximum: 1200 } mount_uploader :image, ImageUploader mount_uploader :video, VideoUploader has_many :comments, dependent: :destroy has_many :notifications, dependent: :destroy has_many :likes, -> { order(created_at: :desc) }, dependent: :destroy has_many :downs, -> { order(created_at: :desc) }, dependent: :destroy def liked_by(user) Like.find_by(user_id: user.id, post_id: id) end def downd_by(user) Down.find_by(user_id: user.id, post_id: id) end def create_notification_like!(current_user) temp = Notification.where(["visitor_id = ? and visited_id = ? and post_id = ? and action = ? ", current_user.id, user_id, id, 'like']) if temp.blank? notification = current_user.active_notifications.new( post_id: id, visited_id: user_id, action: 'like' ) if notification.visitor_id == notification.visited_id notification.checked = true end notification.save if notification.valid? end end def self.search(search) if search Post.where(['text LIKE ?', "%#{search}%"]) else Post.all end end def create_notification_comment!(current_user, comment_id) temp_ids = Comment.select(:user_id).where(post_id: id).where.not(user_id: current_user.id).distinct temp_ids.each do |temp_id| save_notification_comment!(current_user, comment_id, temp_id['user_id']) end save_notification_comment!(current_user, comment_id, user_id) if temp_ids.blank? end def save_notification_comment!(current_user, comment_id, visited_id) notification = current_user.active_notifications.new( post_id: id, comment_id: comment_id, visited_id: visited_id, action: 'comment' ) if notification.visitor_id == notification.visited_id notification.checked = true end notification.save if notification.valid? end end
new.html.erb
<div class="timeline-post-new" id="form-post-<%= current_user.id.to_s %>"> <%= form_with model: @post do |f| %> <%= f.text_area :text, placeholder: "投稿内容", class: "timeline-post-form-new", rows: "3",onkeyup: "ShowLength(value);",id: "text" %> <div class="timeline-new-buttons"> <div id="preview" class="preview"></div> <%= f.file_field :image, id: "filesend",onChange: "imgPreView(event)",accept: "image/*",class: <%= f.submit :投稿, value: "投稿", class: "new-post-btn",id: "submit" %> <p id="inputlength" class="new-textlength"><span id="messageCount">0</span>/1200</p> </div> <% if current_user.high == true %> <div class="accbox"> <label for="label1"><span class="material-icons drop-down">arrow_drop_down</span></label> </div> <% end %> <% end %> </div>
※コードが多すぎたので不要だと思われるコード(この件に関係ない部分)は省略しています。
複数の画像を投稿する場合 file_field にmultiple: true
をつけるだけではいけないのでしょうか。
詳しい方教えていただけると幸いです。
あなたの回答
tips
プレビュー