【问题标题】:Strong params requirement强大的参数要求
【发布时间】:2018-05-17 04:56:05
【问题描述】:

鉴于这些强大的参数:

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 这样的ID。

【问题讨论】:

    标签: javascript ruby-on-rails vue.js ecmascript-6 ruby-on-rails-5


    【解决方案1】:

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

    在您的示例中,image 是必需属性,如果参数中缺少该属性,您将收到错误消息,并且使用 permit for :data, :x, :y, :width, :height 您将它们列入白名单,因此表示它们是安全的使用或通过。

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

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

    希望对你有帮助

    【讨论】:

    • 这也比formdata.append 的东西好得多。谢谢!
    • 很高兴为您提供帮助,如果它对您有帮助,您会接受答案吗@CD-RUM
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多