3

新しい情報を取り込むための多段階フォームを作りたい。名前/連絡先情報を収集したいページ、病歴を収集したい次のページ、人口統計情報を収集したいページ。

Wizard gem をインストールし、専用コントローラーを生成しました。私が見たすべてのチュートリアルは、デバイスとサインアッププロセスに適用されるため、コントローラーのアクションとインスタンス変数、およびそれらをどのように記述すべきかについて少し迷っています。

これをすべて配線する方法を学ぶのに役立つかもしれないサインアップ以外のチュートリアルを誰かが持っているかどうか疑問に思っていました.

任意のポインタまたは支援をいただければ幸いです。

編集:

私の問題は、ウィザードのコントローラーにあると思います。

show および update アクションで、デモは次の変数を宣言することを示しています。

@user = current_user

それは素晴らしいことですが、私には必要のないヘルパー メソッドです。私は患者を作成し、メインの患者コントローラーの作成アクションで行うセッションに患者 ID を保存する必要があります。次に、何らかの方法でそれを patientsteps コントローラーに渡します。

これが私が患者のステップで試したことです

class PatientstepsController < Wicked::WizardController
  before_filter :authenticate_user!

  steps :medical, :summary

  def show
    @patient = Patient.find(params[:patient_id])
    render_wizard
  end

  def update
    @patient = Patient.find(params[:id])
    @patient.attributes = params[:patient]
    render_wizard @patient
  end
end

これを行うと、ID がないと患者を見つけることができなくなります。私はこれが間違っていることを理解していますが、患者コントローラーの作成アクションで作成された患者 ID を渡す方法がわかりません。

患者コントローラーの作成:

 def create
    @patient = Patient.new(params[:patient])

    if @patient.save
        session[:patient_id] = @patient.id
        redirect_to patientsteps_path, notice: "Patient was successfully created."
      else
        render :new
     end
  end
4

1 に答える 1

2

show アクションでは、params[:patient_id] の代わりに session[:patient_id] を使用する必要があります。これは、患者の ID が params ハッシュではなくセッションに格納されるためです。

その後、更新アクションで、[:id] ではなく、params[:patient_id] で患者 ID を受け取ります。

于 2013-05-07T15:05:22.437 に答える