ruby on rails 4 - Wicked Wizard _Totally_ динамический порядок шагов
В предыдущем вопросе я нашел почти то, что мне было нужно: динамический порядок шагов Wicked Wizard
К сожалению, я все еще борюсь со своей проблемой. Я хочу, чтобы у моего 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
1 ответ
Когда я попробовал подобную стратегию в Rails 3.2 с before_filter
это дало мне ошибку, которая предложила мне использовать prepend_before_filter
вместо этого, который работал удовольствие. Похоже, что подобный метод существует в Rails 4: prepend_before_action
, так что это должно работать для вас. Кроме того, я приведу элементы в виде символов (не строк), так что в вашем случае это будет что-то вроде self.steps = Question.pluck(:name).map(&:to_sym)
, Надеюсь, это поможет!