1

みんな!

最初は、大量の要素 (テキスト フィールド、テキスト領域など) を含む 1 つのフォームを作成しました。フォームの準備ができたとき、これほど大きなフォームを連続して記入するのはあまりユーザーフレンドリーではないことがわかりました。「ステップ」システム (ステップ 1 -> ステップ 2 -> ... -> ステップ n)を使用したくありません。エンドユーザーがこのフォームに任意の順序で記入できるようにしたいからです ( + ユーザーはどのフォームに入力する必要があるかを事前に確認できるため、フォームをいくつかのタブに分割しました。

アイデアは次のとおりです。ユーザーがいずれかのタブでフォームに入力したら、[保存] ボタンをクリックして次のタブに進みます (任意の順序で)。

私が知りたかったこと-中間データを保存するための最良の方法は何ですか? 各「ステップ」でタブに関連するデータのみが検証され、DB に保存されるように、モデルに渡されるタブ ID を持つ各タブフォームにいくつかの非表示の入力を用意する必要があります。または、おそらく、現在のオブジェクトを含む session[:object] が必要であり、最後にそれを DB に保存してセッションから消去します。

このアイデアは実現できますか?

前もって感謝します!:)

4

3 に答える 3

3

邪悪と呼ばれる宝石があります、それはあなたが非常に簡単な方法でウィザードを作成することを可能にします、それをチェックしてください

于 2012-09-24T09:57:49.200 に答える
1

私は ruby​​ 忍者ではありませんが、他の言語 (php など) では通常、これを行うためにセッションを使用します。これをレール上でやらないのはなぜですか?

また、セッションを使用することに加えて、「一時ストレージ行」用のテーブルを作成することを検討することもできます。そのため、ページを変更するたびにデータをそのテーブルに保存し、最後にすべてをメイン テーブルに保存できます。

これは、通常セッションを失う場合に便利です...一時ストレージの行をユーザーに関連付けることができ、ユーザーがセッションを失った場合、データベースから未完成のフォームを復元できます。

于 2012-09-24T09:52:23.730 に答える
0

Railscasts 217 - Multistep formアプローチを使用するだけで問題なく動作します。

ただし、すべてを収集した後にのみデータを保存することができ、段階的に保存することはできないため、これは適していない場合があります。

あなたが言及したように、別の解決策は、たとえばjQueryタブを使用してフォームステップを作成し、実際のレコードとそのすべてのデータを保存する前にAJAX/ backbone.jsを介して小さな検証を構築することです。

于 2012-09-24T09:52:38.427 に答える