2013-05-05 111 views
3

我正在使用AngularJS和jQuery-file-uploader插件。我已经配置了导轨来包装我的参数Rails wrap_parameter按预期工作

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, ...] 

记录创建也经历这个控制器工作正常,并且参数按照预期被包装,但它不适用于此。难道我做错了什么?

回答

1

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

太激活autowrappring这种格式,你可以添加格式选项:

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

    ... 
end