Rails 4: 不允许的参数

Rails 4: Unpermitted parameter

我有一张模型图片,我用网络摄像头拍照并保存。我用carrierwave上传图片,用gem生成图片 carrrierwave-data-uri 图片由ajax

发送

我的 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();

  } );
}

当我发送图像时,它在数据库中注册,但不是图像。我收到控制台错误:

不允许的参数:图像

但是如果我在强参数上添加参数 :image,我会得到 Completed 500 Internal Server Error

数据 uri 打印在我的控制台上,但我无法将其放入 图像 变量

感谢帮助!

允许 image 时出现 500 内部服务器错误,因为模型中没有 image 属性。你有 photo,所以你应该使用它作为参数在 ajax 方法中发送 data_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