3

前の質問で必要なものをほぼ見つけました: Wicked Wizard dynamic step order

残念ながら、私はまだ自分の問題に苦しんでいます。Wicked Wizard のステップ順序を完全に動的にしたいと考えています (最初のステップ以外に)。各応答は、各質問データベース アイテムに属するデータベース アイテムです。選択されたレスポンスの next_question 属性を使用して、次に来るステップを決定したいと考えています。

class ExperimentsController < ApplicationController
def create
  @experiment = Experiment.new
  @experiment.save(validate: false)
  redirect_to experiment_steps_path(@experiment, Experiment.steps.first)
end
...
private
  def experiment_params
    params.require(:experiment).permit(:name, :questions, :responses, :form_step)
  end
end



class ExperimentStepsController < ApplicationController
include Wicked::Wizard
before_action :set_steps
before_action :setup_wizard

def show
  @experiment = Experiment.find(params[:experiment_id])
  @next_question = Response.find(params[:next_question])
  jump_to(:next_question)
  render_wizard
end

private

def set_steps
  self.steps = Question.pluck(:name)
end

def response_params
  params.fetch(:response, {}).permit(:next_question)
end

end
4

1 に答える 1

1

Rails 3.2で同様の戦略を試したところ、代わりbefore_filterに使用することを提案するエラーが表示されましたが、これはうまくいきました。prepend_before_filterRails 4: にも同様のメソッドが存在するように見えるprepend_before_actionので、それでうまくいくはずです。また、要素を(文字列ではなく)シンボルとしてキャストするので、あなたの場合はself.steps = Question.pluck(:name).map(&:to_sym). それが役立つことを願っています!

于 2017-01-21T23:08:48.690 に答える