带有Paperclip附件的Rails 3中的多步骤表单

Jer*_*ite 7 forms paperclip formtastic railscasts ruby-on-rails-3

我正在创建一个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.

我也试过将数据存储在一个数组中,直到表单完成,但这导致我的控制器变得庞大而混乱.

KAR*_*ván 1

除非您想将模型保存到会话中,否则将模型保存File到会话中是可行的。向导插件使用会话来存储步骤之间的模型。在我的例子中,它们不会在有效模型上产生错误,仅在无效模型上产生错误。

因此,清除附加文件听起来是个好主意,但就我而言,清除回形针附件Attachment#clear是不够的,因为它仍然想保存一些File.

我发现问题出在仍然包含数据的@queued_for_write属性上。Attachment

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

unless @model.valid?
  @model.image.clear
  @model.image.queued_for_write.clear
end
Run Code Online (Sandbox Code Playgroud)

这是一个回形针错误,并在此提交中得到纠正。