我正在使用Rails 3.0.3开发一个应用程序。
我在以下代码中收到“无法转储文件”错误。
if @post.update_attributes params[:post]
redirect_to post_path(@post) #<= ERROR HERE
谷歌搜索后,我添加了两行来修复它。
if @post.update_attributes params[:post]
params[:post][:photos_attributes] = nil
params[:post][:attachments_attributes] = nil
redirect_to post_path(@post)
现在错误消失了。但我不明白为什么错误发生以及它是如何修复的。我使用active_record作为会话存储,它导致错误,因为文件无法存储在DB中。但是为什么redirect_to尝试在会话中存储文件?
感谢。
萨姆
答案 0 :(得分:2)
添加:ActiveRecord::SessionStore::Session.serializer = :json
到config / application.rb为我解决了这个问题。
答案 1 :(得分:0)
我不确定photo_attributes
和attachment_attributes
中的内容。我的猜测是它们包含某些文件信息并保存它们无法正常工作。
也许您可以发布Post
模型供我们查看?
答案 2 :(得分:0)
我猜是attachment_attributes包含上传的文件。
上传的文件作为ActionDispatch :: Http :: UploadedFile对象存储在params中,并且此类型的对象不可序列化,因此出错。