1

语境

我是 Rails 应用程序开发的新手,所以如果我遗漏了关于在 Rails 中保存/存储状态的明显内容,请告诉我。我在我的应用程序中使用Wicked gem来指导用户完成具有以下步骤的医学评估:

  1. 个人信息
  2. 一般医疗问题
  3. 具体疾病问题
  4. 同意
  5. 提交

问题

如果用户在评估的某个部分离开以检查应用程序的另一个页面,或者如果他们不小心关闭了浏览器,他们将失去所有进度。


我试过的

  • 我在每个步骤上添加了一个保存按钮,用户可以单击以保存他们迄今为止输入的信息,并且在离开和回来时,他们会为他们预先填写信息。然而,这不是我正在寻找的 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 文档并没有真正提到任何类似的东西。

4

0 回答 0