3

我想做一个多步骤的表格来获取新信息。一页我要收集姓名/联系信息,下一页我要收集病史,第三页人口统计信息。

我已经安装了 Wizard gem 并生成了一个专用控制器。我在上面看到的所有教程都适用于设计和注册过程,所以我对控制器操作和实例变量以及我应该如何编写它们有点迷茫。

想知道是否有人有除了注册之外的教程,这可能会帮助我学习如何将这一切连接起来。

任何指针或帮助表示赞赏。

编辑:

我认为我的问题出在我的向导的控制器中。

在演示和更新操作中,演示显示声明变量

@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

In your show action, instead of params[:patient_id] you should use session[:patient_id], because the id of the patient is stored in the session, not in the params hash.

Then in the update action, you will receive the patient id in params[:patient_id], not [:id], because wicked uses params[:id] to identify which step the wizard is on.

于 2013-05-07T15:05:22.437 回答