Rails-不允许通过Postman Params发送阵列

时间:2019-04-06 17:13:30

标签: ruby-on-rails ruby

我正在尝试使用Carrierwave在轨中上传图像。但我在权限方面遇到问题

这是我的控制者:

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>"

我在邮递员中传递的内容如下: enter image description here

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

编辑

将参数从photos[1]重命名为photos[]。我无法说这在邮递员中是可行的,但就html而言,它应该为<input type="file" name="photos[]">(而enctype的形式为multipart/form-data),因为看起来您正在发送哈希,然后将params.require(:photos).permit(:photos => [])更改为params.permit(photos: [])