【问题标题】:Multi-step form in Rails 3 with Paperclip attachmentsRails 3 中的多步表单,带有回形针附件
【发布时间】:2011-05-03 23:01:00
【问题描述】:

我正在按照 Ryan Bates 在这里描述的样式创建一个多部分表单:

http://railscasts.com/episodes/217-multistep-forms
http://asciicasts.com/episodes/217-multistep-forms(文字版)

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

我的表单步骤之一允许用户通过 Paperclip gem 上传多张图片。问题在于 Rails 正在尝试将图像数据上传到会话,该会话返回 TypeError "can't dump File"。

有什么好的方法来解决这个问题?

更新: 我尝试了很多 gem(wizardly、acts_as_wizard 和其他一些较小的 gem),但它们似乎都不适用于 Rails 3。

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

【问题讨论】:

    标签: ruby-on-rails-3 forms paperclip formtastic railscasts


    【解决方案1】:

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

    所以清除附件听起来不错,但在我的情况下,用Attachment#clear 清除回形针附件是不够的,因为它还想保存一些File

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

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

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

    这是一个回形针错误,已在 this commit 中得到纠正。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2010-10-08
      相关资源
      最近更新 更多