2011-05-03 83 views
7

我创建的风格多部分形式,瑞安·贝茨介绍这里:多步形式回形针附件

http://railscasts.com/episodes/217-multistep-forms
http://asciicasts.com/episodes/217-multistep-forms(基于文本的版本)

要总结一下,我有一个视图(每个表单步骤有大量的分支),当用户单击下一个按钮并显示表单的不同部分时,表单变量将存储在会话中。

我的一个表单步骤允许用户通过Paperclip gem上传几张图片。问题在于Rails正在尝试将图像数据上传到会话,该会话正在返回TypeError“无法转储文件”。

什么是一个很好的方式去做这件事?

更新: 我已经试过了一堆宝石(wizardly,acts_as_wizard,和其他一些较小的),但他们都不使用Rails 3

我也尝试了存储数据在一个数组中,直到表单完成,但是这导致我的控制器变得巨大而混乱。

回答

1

将模型保存到会话中,除非您想将File保存到会话中。向导插件正在使用会话在步骤之间存储模型。他们不会在我的情况下在有效模型上产生错误,而只是在无效的情况下。

所以清理附件听起来不错,但在我的情况下清除回形针附件Attachment#clear是不够的,因为它仍然想节省一些File

我发现问题是@queued_for_write属性Attachment仍然包含数据。

所以下面的两行解决我的问题:

unless @model.valid? 
    @model.image.clear 
    @model.image.queued_for_write.clear 
end 

这是一个曲别针错误和this commit已得到纠正。