Javascript Rails 4:不允许的参数
我有一张模型照片,我用网络摄像头拍照并保存它。我用carrierwave上传图像,并用gem生成图像。图像由ajax发送 my PicturesController.rb上的函数是:Javascript Rails 4:不允许的参数,javascript,ruby-on-rails,ruby,ajax,data-uri,Javascript,Ruby On Rails,Ruby,Ajax,Data Uri,我有一张模型照片,我用网络摄像头拍照并保存它。我用carrierwave上传图像,并用gem生成图像。图像由ajax发送 my PicturesController.rb上的函数是: def upload_image photo = params[:picture][:photo] @picture = Picture.new(picture_params) @picture.user_id = current_user.id @picture.photo
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();
} );
}
当我发送图像时,它在数据库中注册,但不是图像。我发现控制台错误:
不允许的参数:图像
但是如果我在我的strong参数上添加参数:image,我会得到已完成的500个内部服务器错误
数据uri打印在我的控制台上,但我不能将其放入图像变量中
谢谢你的帮助 由于模型中没有
image
属性,因此在允许image
时会出现500个内部服务器错误。您使用的是photo
,因此您应该使用它作为ajax
方法中发送data\u uri
的参数
将AJAX调用中的image
更改为photo
:
data: { picture: { photo: data_uri } }
还要对控制器方法进行如下更改:
def upload_image
@picture = Picture.new(picture_params)
@picture.user_id = current_user.id
@picture.save
end
data\u uri=params[:image]
。请尝试params[:picture][:image]
。此外,由于图像不在强参数中,因此会出现未经允许的参数错误。我不知道您是否有图片模型的图像属性。这一定是内部服务器错误的原因。
。谢谢,但同样的错误。我做了:data:{picture:{photo:data_uri}}但是photo值为空[“photo”,nil]当我这样做时,我没有得到参数错误,但是photo值在控制台中为空:[[“photo”,nil]你能在你的ajax
方法中调试,看看在发出请求时data\u uri
是否有值吗?是的,我这样做了。值在那里。我也在rails控制台上调试,使用puts。但是当我执行@picture.photo=photo时,值仍然为空。你是否也在控制器方法中进行了更改?它工作,不再得到错误,但是n I do@picture.photo=photo,photo值为空[“photo”,nil]