我正在创建一个Ryan Bates描述的风格的多部分表单:
http://railscasts.com/episodes/217-multistep-forms
http://asciicasts.com/episodes/217-multistep-forms(基于文字的版本)
总而言之,我有一个视图(每个表单步骤都有一堆部分),当用户单击下一个按钮并显示表单的不同部分时,表单变量存储在会话中。
我的一个表单步骤允许用户通过Paperclip gem上传多个图像。问题是Rails正在尝试将图像数据上传到会话,而会话返回TypeError“无法转储文件”。
有什么好办法可以解决这个问题?
更新: 我尝试了一堆宝石(巫师,acts_as_wizard和其他一些小宝石),但它们似乎都不适用于Rails 3。
我还试过将数据存储在一个数组中,直到表单完成,但这导致我的控制器变得庞大而混乱。
答案 0 :(得分:1)
除非您想将File
保存到会话中,否则将模型保存到会话中是有效的。向导插件使用会话在步骤之间存储模型。在我的情况下,它们不会在有效模型上产生错误。
因此清除附件文件听起来不错,但在我的情况下,使用Attachment#clear
清除回形针附件是不够的,因为它仍然想保存一些File
。
我发现问题出在Attachment
中仍然包含数据的@queued_for_write
属性。
所以以下两行解决了我的问题:
unless @model.valid?
@model.image.clear
@model.image.queued_for_write.clear
end
这是一个回形针错误,已在this commit中更正。