【问题标题】:Rails - Sending array through Postman Params not permittedRails - 不允许通过 Postman 参数发送数组
【发布时间】:2019-04-08 22:48:06
【问题描述】:

我正在尝试使用 Carrierwave 在 Rails 中上传图像。但我的权限有问题

这是我的控制器:

class PhotoController < ApplicationController
  def upload_multiple
    render json: {
      status: params[:photos].inspect,
    }, status: 200
  end

  def photos_params
    params.require(:photos).permit(:photos => [])
  end
end

我正在尝试检查以进行调试。检查的结果是:

"status": "<ActionController::Parameters {\"1\"=>#<ActionDispatch::Http::UploadedFile:0x00007fe8b1ae7d50 @tempfile=#<Tempfile:/var/folders/4w/32p7h9rx2mjf9_m60852pn2m0000gn/T/RackMultipart20190406-1520-1r799qx.jpg>, @original_filename=\"IMG_1303.jpg\", @content_type=\"image/jpeg\", @headers=\"Content-Disposition: form-data; name=\\\"photos[1]\\\"; filename=\\\"IMG_1303.jpg\\\"\\r\\nContent-Type: image/jpeg\\r\\n\">} permitted: false>"

我在邮递员中传递的内容如下:

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    编辑

    将参数从photos[1] 重命名为photos[]。我不能说这在邮递员中是否可行,但就 html 而言,它应该是 &lt;input type="file" name="photos[]"&gt;enctype 的形式是 multipart/form-data),因为看起来你正在发送哈希,然后更改 @987654326 @到params.permit(photos: [])

    【讨论】:

    • 试过了,结果一样
    • 您的意思是status: params.permit(photos: []).inspect 表明photos 参数仍然不允许使用吗?您能否显示带有参数的原始 http 请求。
    • 检查参数给出以下信息: <:parameters>#<:http::uploadedfile:0x00007fe8b1ae7d50>, @original_filename=\"IMG_1303.jpg\", @content_type=\"image/jpeg\", @headers=\"Content-Disposition: form-data;名称=\\\"照片[1]\\\";文件名=\\\"IMG_1303.jpg\\\"\\r\\n内容类型:图像/jpeg\\r\\n\">}允许:假>“
    • 尝试将参数从photos[1]重命名为photos[]。我不能说这在邮递员中是否可行,但就 html 而言,它应该是 &lt;input type="file" name="photos[]"&gt;(表单类型是 multipart/form-data),因为看起来你正在发送哈希。
    • 这有效,你可以添加这个来回答,我会接受它:) 非常感谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多