2013-05-05 72 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