0

マルチステップウィザードの作成に使用されるWickedgemのRailscastを見たところです。

render_wizardこのgemを使用して、呼び出しでデータが何らかの方法で転送されるウィザードを作成できるかどうか疑問に思いました。私の最初のいじくり回しに基づいて、私はこれが可能であるとは思わない。私が解決したい問題は、最初のステップで国を取得し、2番目のステップでその国の人々を選択できるウィザードを作成することです。

この問題を解決する簡単な方法はありますか?助けてくれてありがとう!

4

1 に答える 1

2

テーブルのない Ruby オブジェクトを使用できます。各 show ステップの前にそれをセッションにシリアル化し、各更新ステップの前にセッションからロードします (新しいパラメーターをマージします)。

before_filter :initialize_wizard, on: [:show, :update]

...

def initialize_wizard
  @wizard = YourWizardTempModel.new
  @wizard.update_attributes(session['wizard']) if session['wizard'].present?
  @wizard.update_attributes(params['wizard']) if params['wizard'].present?
  session['wizard'] = @wizard.as_json
end

次に、次のように country_id に基づいて人々の選択を組み立てる条件付きの before_filter を作成できます。

before_filter :populate_people, if: "step == 'select_people'"

...

def populate_people
  People.find_by_country_id(@wizard.country_id)
end
于 2013-03-05T19:06:39.607 に答える