4

我正在使用 AngularJS 和 jQuery-file-uploader 插件。我已经配置了 rails 来包装我的参数

ActiveSupport.on_load(:action_controller) do
    wrap_parameters format: [:json]
end

除了我尝试上传文件时,这对一切都很好。我使用的上传器插件与正常情况略有不同,但它应该仍然可以工作。而是让插件在添加文件时上传文件,我正在创建一条新记录,然后上传文件。请求正确触发,但是文件的参数没有被 rails 包裹。在我的日志中,我得到

Processing by MeetingsController#update as JSON
Parameters: {"icon"=>#<ActionDispatch::Http::UploadedFile:0x007fde79178b58 @original_filename="006.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"icon\"; filename=\"006.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/var/folders/_v/qsm9g7nn00s0jmfkynmvwp140000gn/T/RackMultipart20130505-15753-17ig2it>>, "id"=>"35"}

我期待看到参数是

{ :meeting => { :icon => ... }}

在我的MeetingsController我有

wrap_parameters :meeting, include: [..., :icon, ...]

也通过此控制器的记录创建工作完美,参数按预期包装,但它不适用于此。难道我做错了什么?

4

1 回答 1

3

那是因为文件上传请求具有 multipart/form-data 格式。

要以这种格式也激活自动包装,您可以添加格式选项:

class  MeetingsController  < ApplicationController
  wrap_parameters :meeting, include: [..., :icon, ...], format: [:json, :multipart_form]

  ...
end
于 2014-01-16T11:35:35.173 回答