2015-05-02 4 views
0

Я пытаюсь сделать Multiupload снимки с carrierwave в моей app.There является 2 класс: Downloader и PicturesParam отсутствует или значение empty.Rails

Downloader имеет поле а два по умолчанию

t.datetime "created_at" 
t.datetime "updated_at" 

и downloaders_controller

class DownloadersController < ApplicationController 

    def new 
    @downloader = Downloader.new 
    @picture = @downloader.pictures.build 
    end 

    def create 
    @downloader = Downloader.new(downloader_params) 
    if @downloader.save 
     params[:pictures]['image'].each do |img| 
     @picture = @downloader.pictures.create!(image: img, downloader_id: @downloader.id) 
     end 
     redirect_to new_downloader_path 
    end 
    end 

    private 
    def downloader_params 
    params.require(:downloader).permit(pictures_attributes: [ :image ]) 
    end 
end 

pictures стол

create_table "pictures", force: true do |t| 
    t.string "image" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "downloader_id" 
    end 

вид new

= form_for @downloader, multiple: true do |f| 
    = f.fields_for :pictures do |p| 
    = p.file_field :image, multiple: true, name: "pictures[image][]" 
    = f.submit 

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

param is missing or the value is empty: downloader 

, как это исправить?

ответ

0

Try:

p.file_field :image, multiple: true, name: "downloader[pictures[image][]]" 

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

Кроме того, путем переопределения имени ввода, подобного этому, определение сильного параметра может не работать с pictures_attributes.

+0

Благодарю вас за ответ, но извините - я не понимаю, что вы имеете в виду. Не могли бы вы подробно рассказать об этом? – wweare

+1

Несомненно. Указав такое имя, как это «имя:» изображения [изображение] [] «вы переопределяете значения по умолчанию для rails. По умолчанию рельсы будут обертывать ваши атрибуты формы в «загрузчик», но поскольку вы вручную задаете имя поля изображения, вы нарушаете значение по умолчанию и начинаете работать не так, как ожидалось. Просто избегайте возиться с рельсами по умолчанию, если вы не знаете и не понимаете, что делаете. Конечно, без обид. –

+0

Да, я понял. Спасибо – wweare

Смежные вопросы