2017-04-14 12 views
0

私は、大量のデータをバッチで変換するステップバイステップフォームを構築しようとしています。私は最後のステップでのみデータベースにデータを保存したい。このようなフォームを作成する方法は、セッション記憶域にデータを保存する方法です。フォーム間に大きなデータセットを渡す?

session[:stored_data] = large_dataset 

しかし、これで保存しようとするとCookieOverflowエラーが発生します。

私の他のオプションは何ですか?私はステップ間でデータベースにデータを保存することにこだわっていますか?

+0

このCookieオーバーフローの問題を回避するために、RailsにセッションをRedisまたはデータベースに格納させることができます。 – Iceman

+0

これは理想的ですが、残念なことにそれが本当に私の選択肢であるかどうかは分かりません。これは従来のコードベース用です。 – humdinger

答えて

0

実際にフォーム自体に格納することができます。あなたが持つかもしれない最初のフォームで...

<%= f.text_field :name_of_dog %> 

...そしてあなたが最初にフォームのフィールドを格納することができ二番目の形式ではなく隠しフィールドで

<%= f.hidden_field :name_of_dog %> 

あなたは、後続のすべてのフォームを介してデータを運ぶこの方法で、最終的なフォームが送信されたとき、あなたは、データベースに永続化する必要がある完全なデータを持っています。

これは、エンドユーザーの情報量が圧倒的に多い単一のDBレコード、またはページあたりのレコードデータ量が限られている(iframe内にあるため)としています。

また、私はしばしば:pageのようなものと呼ばれるattr_accessorを持っています。そのため、作成または編集アクションが呼び出されると、どのページが送信されたのか分かります。

関連する問題