Member 12694539 Ответов: 0

Многократная загрузка несущей волны


Я создал модуль галереи с помощью этого урока 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 %>

0 Ответов