7

Ryan Bates がここで説明しているスタイルでマルチパート フォームを作成しています。

http://railscasts.com/episodes/217-multistep-forms
http://asciicasts.com/episodes/217-multistep-forms (テキストベース版)

要約すると、ビューが 1 つあり (フォーム ステップごとに多数のパーシャルがあります)、ユーザーが次のボタンをクリックしてフォームの別の部分が表示されると、フォーム変数がセッションに格納されます。

私のフォーム ステップの 1 つで、ユーザーは Paperclip gem を介して複数の画像をアップロードできます。これに関する問題は、Rails がイメージ データをセッションにアップロードしようとしており、TypeError "can't dump File" が返されていることです。

これについての良い方法は何ですか?

更新: たくさんの gem (魔法のように、acts_as_wizard、およびその他の小さなもの) を試しましたが、どれも Rails 3 では動作しないようです。

また、フォームが完成するまでデータを配列に保存しようとしましたが、それによりコントローラーが巨大で乱雑になりました。

4

1 に答える 1

1

セッションにモデルを保存しない限り、モデルをセッションに保存することはできますFile。ウィザード プラグインはセッションを使用して、ステップ間でモデルを保存します。私の場合、無効なモデルでのみ、有効なモデルでエラーは発生しません。

添付ファイルをクリアするのは良い考えAttachment#clearに思えますが、私の場合、いくつかのFile.

問題は、まだデータが含まれている@queued_for_write属性にあることがわかりました。Attachment

したがって、次の2行で問題が解決しました。

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

これはペーパークリップのバグであり、このコミットで修正されました。

于 2011-11-10T11:55:16.743 に答える