我有三个现场电子邮件,phone_number和发票
用户可以通过浏览按钮上传多个发票或拖放。
用户有两个字段:email和phone_number 用户has_many发票
的javascript
<script type="text/javascript" charset="utf-8">
$(function () {
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
url: '/invoices/upload_file',
change: function (e, data) {
},
add: function (e, data) {
data.submit();
}
});
//
// Load existing files:
});
</script>
这里我正在做的每当用户拖放文件ajax就是火,而我正在做这个图像对象在会话中但是得到
无法转储错误
我的控制器
def new
session[:invoices_attributes] ||= {}
@invoice = User.new
@invoice.invoices.build
end
def upload_file
session["invoices_attributes"].deep_merge!( user_params["invoices_attributes"].first)
render nothing: true
end
答案 0 :(得分:0)
我认为,在会话中存储文件数据是不可能的。您应该尝试将其保存到文件系统上的临时文件中,然后在会话中存储该文件的路径。
您可以使用
保存临时文件# create temporary file
temp_file = TempFile.new('invoice')
# save uploaded file
File.open(temp_file.path, "w") do |f|
f.write params[:invoices_attributes].delete(:file).read
f.close
end
# store temporary file path
params[:invoices_attributes][:file_path] = temp_file.path
代码未经过测试,但您应该知道。