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

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

我想知道是否有人除了注册教程之外还有其他教程可以帮助我学习如何进行全部整理。

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

编辑:

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

在展示和更新操作中,演示展示了声明的变量

@user = current_user


很好,但这是我不需要的辅助方法。我需要创建一个病人,并将其存储在一个会话中,这在我在主要病人控制器中的create动作中进行。然后以某种方式将其传递给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的患者。我知道我做错了,但是我不确定如何传递在我的患者控制器create action中创建的Patient_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

最佳答案

在您的表演动作中,应该使用session [:patient_id]而不是params [:Patient_id],因为患者的ID存储在会话中,而不是在params哈希中。

然后,在更新操作中,您将以params [:Patient_id]而非[:id]接收患者ID,因为wicked使用params [:id]来确定向导正在执行的步骤。

10-05 18:17
查看更多