Многократная загрузка несущей волны
Я создал модуль галереи с помощью этого урока https://kolosek.com/carrierwave-upload-multiple-images/ а теперь я хотел добавить еще один атрибут изображения, имеющий мастер-образ, к той же модели. Поэтому я решил создать еще один загрузчик. Код работает нормально, но когда я загружаю несколько изображений и пытаюсь отредактировать их, форма редактирования показывает атрибут upload image несколько раз. что не так в моем коде?
Что я уже пробовал:
код контроллера галереи :
class GalleriesController < AdminController def index @galleries = Gallery.all end def show @images = @gallery.images.all end def new @gallery = Gallery.new @image = @gallery.images.build end def create @gallery = Gallery.new(gallery_params) respond_to do |format| if @gallery.save params[:images]['avatar'].each do |a| @gallery.images.create!(:avatar => a, :gallery_id => @gallery.id) end params[:images]['image'].each do |a| @images = @gallery.images.create!(:image => a, :gallery_id => @gallery.id) end format.html { redirect_to @gallery, notice: 'Gallery was successfully created.' } format.json { render :show, status: :created, location: @gallery } else format.html { render :new } format.json { render json: @gallery.errors, status: :unprocessable_entity } end end end def gallery_params params.require(:gallery).permit(:title, :details, :status, images_attributes:[:id, :gallery_id, :image, :avatar]) end
модель изображения
class Image < ApplicationRecord belongs_to :gallery mount_uploader :image, ImageUploader mount_uploader :avatar, AvatarUploader end
Модель галереи:
class Gallery < ApplicationRecord has_many :images accepts_nested_attributes_for :images end
форма.HTML-код.Еврорадио
<%= form.fields_for :images do |p| %> <div class="field"> <%= p.label :master_image, class: "col-2 col-form-label" %> <%= p.file_field :avatar, :multiple => true, name: "images[avatar][]" %> </div> <% end %> <%= form.fields_for :images do |p| %> <div class="field"> <%= p.label :image, class: "col-2 col-form-label" %> <%= p.file_field :image, :multiple => true, name: "images[image][]" %> </div> <% end %>