2016-11-22 2 views
0

Я пытаюсь реализовать несколько изображений загружать для моего приложения с скрепкой, как this linkMultiple ошибка загрузки скрепки

На самом деле простой работа загрузки, но если я пытаюсь реализовать массив У ​​меня есть ошибка.

неопределенный метод `создать» для Paperclip :: Attachment: 0x007f33ecb3bd30

campings_controller.rb

def create 

     @camping = Camping.new((camping_params).merge(:user_id => current_user.id)) 

     respond_to do |format| 
     if @camping.save 
      format.html { redirect_to @camping, notice: 'Camping was successfully created.' } 
      format.json { render :show, status: :created, location: @camping } 
     else 
      format.html { render :new } 
      format.json { render json: @camping.errors, status: :unprocessable_entity } 
     end 
     end 
    end 

    def update 
    @camping = Camping.find(params[:id]) 
    if params[:image] 
     params[:image].each do |image| 
      @camping.create(image: image) 
     end 
     end 
     end 

_edit.html.erb

<%= file_field_tag "image[]", type: :file, multiple: true %> 

camping.rb

has_attached_file :image, default_url: "/images/missing.jpg" 
    validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"] 

ответ

0

Вам нужна промежуточная модель.

В полученной ссылке у вас есть модели Rails Gallery и Picture (с галереей has_many pictures). Если посмотреть на исключение, у вас есть один кемпинг, и у него есть одно поле для файла, в котором находится изображение. Поле файла может содержать только ссылку на один файл, поэтому вам нужно создать модель для отслеживания каждого экземпляра (или отдельного столбца для каждого изображения).

Вы хотите создать модель под названием "CampingPicture", установите скрепку изображение на кемпинге изображения, установите Camping has_many: camping_pictures и CampingPictures belongs_to: кемпинг, а затем сделать

params[:image].each do |image| 
    @camping.camping_pictures.create(image: image) 
end 
Смежные вопросы