2016-08-11 4 views
2

У меня есть модель Изображение, где я делаю фото с веб-камерой и сохраняю его. Я загрузить изображения с carrierwave и генерировать изображение с жемчужиной carrrierwave-data-uri Изображение посланный AJAXRails 4: параметр Unpermitted

функция на моем PicturesController.rb является:

def upload_image 
    photo = params[:picture][:photo] 
    @picture = Picture.new(picture_params) 
    @picture.user_id = current_user.id 
    @picture.photo = photo 
    @picture.save 
    end 


    private 
    def set_picture 
     @picture = Picture.find(params[:id]) 
    end 

    def picture_params 
     params.require(:picture).permit(:photo, :comment, :user_id) 
    end 
end 

Мой Ajax

function save_photo() { 
    Webcam.snap(function(data_uri) { 

    $.ajax({ 
     type: 'POST', 
     url: '/pictures/upload', 
     async: true, 
     data: { picture: {photo: data_uri} } 
    }) 

    .done(function() { 
     console.log(photo); 
    }); 

    Webcam.reset(); 

    }); 
} 

Когда я отправляю изображение, оно зарегистрировано в базе данных, но не изображение. Я получаю ошибку консоли:

Самовольной параметр: изображение

Но если добавить параметр : изображение на моих сильных параметрах, я получаю внутреннюю ошибку сервера Завершено 500

Ури данные печатается на моей консоли, но я не могу поместить его в . переменная

Спасибо!

+0

'data_uri = PARAMS [: изображение]'. Попробуйте 'params [: picture] [: image]'. Кроме того, ошибки параметров, которые не были выполнены, возникают из-за того, что изображение отсутствует в сильных параметрах. Я не знаю, есть ли у вас ** атрибут ** ** для ** картины ** модели. Это должно быть причиной «внутренней ошибки сервера». – sajinmp

+0

Спасибо, но такая же ошибка. Я сделал: data: {picture: {photo: data_uri}}, но значение фотографии приходит пустым ["photo", nil] –

ответ

2

Вы получаете 500 внутренних ошибок сервера при разрешении image, потому что у вас нет атрибута image в модели. Вместо этого у вас есть photo, поэтому вы должны использовать его в качестве параметра для отправки data_uri в методе ajax.

Изменение image в вызове AJAX для photo:

data: { picture: { photo: data_uri } } 

также внести изменения в вашем методе контроллера, как это:

def upload_image 
    @picture = Picture.new(picture_params) 
    @picture.user_id = current_user.id 
    @picture.save 
end 
+0

Когда я это сделал, я не получаю ошибку параметрирования, но значение фотографии пуст в консоли: [["photo", nil] –

+0

можете ли вы отлаживать свой метод 'ajax', чтобы узнать, имеет ли значение' data_uri' при выполнении запроса? – titan

+0

Да, я сделал это. Значение есть. Я тоже отлаживаю консоль rails, с помощью puts. Но когда я делаю @ picture.photo = фото, значение остается пустым. –

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