首页 > 解决方案 > 强大的参数要求

问题描述

鉴于这些强大的参数:

def image_params
  params.require(:image).permit(:data, :x, :y, :width, :height)
end

究竟应该:image是什么?我是这样从我的前端提交的:

updateImage: function (e) {
    e.preventDefault()
    var formData = new FormData()
    formData.append(`x`, this.crop_x)
    formData.append(`y`, this.crop_y)
    formData.append(`width`, this.crop_width)
    formData.append(`height`, this.crop_height)
    formData.append(`image`, this.imageID)
    this.$http.patch(`/articles/${this.id}/images/${this.imageID}`, formData)
}

这里假设:image应该是一个像16.

标签: javascriptruby-on-railsvue.jsecmascript-6ruby-on-rails-5

解决方案


使用strong_params时,您不必指定数据类型,您只是在设置哪些属性是强制性的,哪些是允许的,

在您的示例中,image是一个必需的属性,如果参数中缺少它,您将收到一个错误,并且permit:data, :x, :y, :width, :height将它们列入白名单,以便说明它们可以安全使用或通过。

您可能希望以这种方式创建它,而不是进行附加,

{image: {data: '', x: '', y: '', width: '', height: ''}}

希望这可以帮助


推荐阅读