暂时将回形针对象存储在会话中

时间:2013-11-20 04:48:39

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有三个现场电子邮件,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

1 个答案:

答案 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

代码未经过测试,但您应该知道。