语境
我是 Rails 应用程序开发的新手,所以如果我遗漏了关于在 Rails 中保存/存储状态的明显内容,请告诉我。我在我的应用程序中使用Wicked gem来指导用户完成具有以下步骤的医学评估:
- 个人信息
- 一般医疗问题
- 具体疾病问题
- 同意
- 提交
问题
如果用户在评估的某个部分离开以检查应用程序的另一个页面,或者如果他们不小心关闭了浏览器,他们将失去所有进度。
我试过的
我在每个步骤上添加了一个保存按钮,用户可以单击以保存他们迄今为止输入的信息,并且在离开和回来时,他们会为他们预先填写信息。然而,这不是我正在寻找的 UX,因为用户仍然必须从第一步开始,然后继续单击下一步,直到他们到达最后一步,或者使用导航找到该步骤。我希望向导在他们离开的地方自动打开。
我尝试了这种方法,在该方法中,我为调用的用户添加了一个属性,
:assessment_step
并在每次用户到达新步骤时更新它,如果用户打开向导时该步骤存在,则转到该步骤。这种方法有效,但非常hacky,根本无法扩展。随着我添加更多步骤和更多向导,维护起来会很痛苦。这是代码:class MedicalAssessmentController < ApplicationController include Wicked::Wizard steps :personal_info, :medical_questions, :disease_questions, :consent, :submit def show @user = current_user # default assessment step is 0 @steps = [:personal_info, :medical_questions, :disease_questions, :consent, :submit] case step when :personal_info if @user.assessment_step != 0: jump_to(@steps[@user.assessment_step]) @user.update_attribute(:assessment_step, 0) # set the step reached to step 0 when :medical_questions @user.update_attribute(:assessment_step, 1) when :disease_questions @user.update_attribute(:assessment_step, 2) when :consent @user.update_attribute(:assessment_step, 3) when :submit @user.update_attribute(:assessment_step, 4) end # DO MORE STUFF render_wizard end end
我读过的东西
我在 SO 或在线任何地方都找不到任何类似的问题。Wicked gem 文档并没有真正提到任何类似的东西。