Rails 3中使用Paperclip附件的多步表单

7
我正在创建一个多部分表单,风格与Ryan Bates在这里描述的类似: http://railscasts.com/episodes/217-multistep-forms http://asciicasts.com/episodes/217-multistep-forms(文本版本)
简而言之,我有一个视图(每个表单步骤都有一堆局部视图),当用户点击下一步按钮并显示表单的不同部分时,表单变量存储在会话中。
我的其中一个表单步骤允许用户通过Paperclip gem上传多个图像。问题在于Rails试图将图像数据上传到会话中,这会返回TypeError“无法转储文件”。
有什么好方法可以解决这个问题吗?
更新: 我尝试了很多gem(wizardly、acts_as_wizard和其他一些较小的gem),但它们似乎都不能与Rails 3一起使用。

我也尝试过将数据存储在数组中,直到表单完成,但这会使我的控制器变得庞大而混乱。

1个回答

1

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

因此,清除附加的文件听起来是个好主意,但在我的情况下,使用{{link1:Attachment#clear}}清除paperclip附件是不够的,因为它仍然想要保存一些文件

我发现问题出在Attachment中的{{link2:@queued_for_write}}属性上,它仍然包含数据。

因此,以下两行解决了我的问题:

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

这是一个纸夹错误,已在此提交中进行了更正。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接