1

環境

Rails でのアプリ開発は初めてなので、Rails での状態の保存/保存について明らかな何かが不足している場合はお知らせください。私は自分のアプリでWicked gemを使用して、次の手順で行われる医学的評価を通じてユーザーをガイドしています。

  1. 個人情報
  2. 一般的な医学的質問
  3. 特定の疾患に関する質問
  4. 同意
  5. 送信

問題

ユーザーがアプリの別のページを確認するために評価の特定の部分を離れたり、誤ってブラウザーを閉じたりすると、進行状況がすべて失われます。


私が試したこと

  • ユーザーがこれまでに入力した情報を保存するためにクリックできる保存ボタンをすべてのステップに追加しました。また、ユーザーが終了して戻ってくると、情報が事前に入力されます。ただし、これは私が探している UX ではありません。ユーザーは最初のステップから始めて、最後に行ったステップに到達するまで [次へ] をクリックし続けるか、ナビゲーションを使用してステップを見つける必要があるためです。ウィザードが中断したところから自動的に開くようにします。

  • :assessment_step呼び出されたユーザーの属性を追加し、ユーザーが新しいステップに到達するたびに更新し、ユーザーがウィザードを開くたびに存在する場合はそのステップに移動するこのアプローチを試しました。このアプローチは機能しますが、非常にハックであり、スケーラブルではありません。ステップやウィザードを追加すると、これを維持するのが大変になります。コードは次のとおりです。

    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