2017-02-23 8 views
1

Я пытаюсь получить Paperclip для загрузки изображения в s3 из моей модели фестиваля в форме submit, но я получаю Непропущенный параметр: изображение. ошибкаPaperclip Неопроверенный параметр: image

Я проверил сильные параметры, проверку содержания модели и прочитал документы скрепки безрезультатно.

Я думаю, что я сузил проблему до моего запроса на отправку в БД, не может обрабатывать объект File, который присваивается Festival.image, но не может понять, как я буду представлять это в почтовом запросе.

Я собираю данные в рельсах, используя реакцию на рельсах на передней панели с рельсами в качестве бэкэнд. Я следовал вместе с этим примером кода https://github.com/carlbaron/react-file-upload-demo

Я также использую React-dropzone для захвата загруженного файла и добавляет атрибут предварительного просмотра для предварительного просмотра изображения.

Застрял на этом в течение некоторого времени, любая помощь очень ценится!

Начало запроса пост напечатанной утешать

Processing by FestivalsController#create as JSON 

Parameters: {"festival"=>{"fest_name"=>"Test Festival", "image"=>{"preview"=>"blob:http://localhost:5000/76b95cb5-45bf-46a9-ba7b-f5b9ad127521"}}} 

| Unpermitted parameter: image 

Фестиваль объект выводится на консоль festival object Сообщение Запрос к БД через Аксиос

postFestival(festival) { 
    let config = { 
     responseType: 'json', 
     processData: false, 
     contentType: false, 
     headers: ReactOnRails.authenticityHeaders(), 
    }; 
     let str = JSON.stringify(festival); 
     console.log("ENTITY IS " + str); 

     //returns 
     //ENTITY IS {"fest_name":"Test Festival","image":{"preview":"blob:http://localhost:5000/76b95cb5-45bf-46a9-ba7b-f5b9ad127521"}} 

     return(
     request.post('/festivals/create', {festival}, config) 
    ); 
    }, 

фестиваль .rb

class Festival < ApplicationRecord 

    has_attached_file :image, default_url: "/assets/ASOT-COVER.png" 
    validates_attachment :image, 
         content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] } 


    end 

Фестивали Контроллер

def create 

    @festival = Festival.create(festival_params) 

    puts "festival.image =" + @festival.image.inspect 
    #returns = festival.image =#<Paperclip::Attachment:0x007fc288868bf0 @name=:image, @name_string="image", @instance=# 

    if @festival.save 
     puts "Festival SAved = + " + @festival.inspect 
     #returns the festival object saved to the DB minus the image param 
    else 
     respond_to do |format| 
     format.json { render json: @festival.errors, status: :unprocessable_entity} 
     puts "ERROR = " + @festival.errors.inspect 
     end 
    end 

    private 

    def festival_params 

     params.require(:festival).permit(:fest_name, :fest_organizer, :fest_location, 
             :fest_date, :fest_url, :fest_venue, :fest_description, 
            :image) 
    end 
    end 

ответ

1

Как параметр image в запросе хэш "image"=>{"preview"=>"blob:http://localhost:5000/76b95cb5-45bf-46a9-ba7b-f5b9ad127521"}, вам нужно будет модифицировать свой метод festival_params так:

def festival_params 
    params.require(:festival).permit(:fest_name, :fest_organizer, :fest_location, 
            :fest_date, :fest_url, :fest_venue, :fest_description, 
           { image: :preview }) 
end 

Пусть я знаю, разрешает ли она ошибку.

+0

Спасибо, что избавились от непредвиденной ошибки param! Теперь я получаю сообщение «Ошибка дескриптора Paperclip No» для {«preview» => «blob: http: // localhost: 5000/76b95cb5-45bf-46a9-ba7b-f5b9ad127521»}, но из других вопросов переполнения стека я бы не передал правильный класс к Paperclip, поэтому я постараюсь изучить это, когда вернусь домой! – monopolyman