4

ユーザーが複数の異なるページに情報を入力するマルチステップ フォームがあります。従来のレールでは、各リソースを独自のコントローラーで個別に保持し、REST アクションを使用してデータを操作します。

従来のシステムでは、1 つのマルチステップ フォームに対して 3 ~ 5 個の異なるコントローラー (一部のステップはオプション) を使用していました。従来のやり方ではコントローラーに「秩序」という感覚がありません。プロジェクトに参加する新しい開発者は、どのステップがどのステップにマップされるかなどを学ばなければなりません。

一方で、慣習を打ち破り、複数ステップのフォーム全体を 1 つのコントローラーで管理することも考えました。このコントローラーは、次のようなメソッドでいっぱいになります。

def personal_info
  # code...
end

def person_info_update
  # code...
end

def residence_info
  # code...
end

def residence_info_update
  # code...
end

# many more coupled methods like the above...

この 1 つのコントローラーはかなり長くなりますが、基本的には一連の結合されたメソッドです。1 つはステップ (フォーム) を表示するためのもので、もう 1 つは更新して次のステップにリダイレクトするためのものです。

これは Rails の慣習に違反するため、独自のルーティングを設定する必要があります。

しかし、他の人がこの問題をどのように解決したのか興味がありますか? 私は両方のCANが機能することを知っていますが、長期的にはどちらが保守とコーディングが容易かを知りたいです.

4

2 に答える 2

0

リソースはページと同じではありません。どちらの方法も REST の制約を破ると思います。

あなたの興味はすべて、ブラウザーに常駐する View ドメインにありました。単一のフォームを複数の部分で表示したい場合は、HTML、CSS などを使用してください。

それ以外の場合は、フォームの進行のためにサーバーに一時的なストレージを作成するだけです。

于 2012-09-02T11:52:06.170 に答える
0

https://github.com/pluginaweek/state_machineでこのようなことをしました

アイデアは、フォームのステップごとに 1 つの状態を持ち、実際のリソースの状態に応じて別のフォームをパーシャルに単純にレンダリングすることでした。上記の gem を使用すると、各状態の検証とコールバックを指定できます。

このように、標準の REST コントローラー アクションを使用できます。

于 2012-09-02T13:17:41.473 に答える