我正在尝试使用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>"
我在做什么错了?
答案 0 :(得分:1)
编辑
将参数从photos[1]
重命名为photos[]
。我无法说这在邮递员中是可行的,但就html而言,它应该为<input type="file" name="photos[]">
(而enctype
的形式为multipart/form-data
),因为看起来您正在发送哈希,然后将params.require(:photos).permit(:photos => [])
更改为params.permit(photos: [])
。