Ruby on rails RubyonRails 4-邪恶向导_完全_动态步骤顺序

Ruby on rails RubyonRails 4-邪恶向导_完全_动态步骤顺序,ruby-on-rails,wicked-gem,Ruby On Rails,Wicked Gem,我在前面的一个问题中找到了我所需要的: 不幸的是,我仍在努力解决我的问题。我想让我的邪恶巫师拥有完全动态的步骤顺序(除了第一步)。每个回答都是属于每个问题数据库项的数据库项。我想使用所选响应中的next_question属性来确定下一步将执行哪一步 class ExperimentsController < ApplicationController def create @experiment = Experiment.new @experiment.save(validate:

我在前面的一个问题中找到了我所需要的:

不幸的是,我仍在努力解决我的问题。我想让我的邪恶巫师拥有完全动态的步骤顺序(除了第一步)。每个回答都是属于每个问题数据库项的数据库项。我想使用所选响应中的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
类实验控制器
当我在Rails 3.2中尝试了一个类似的策略,即使用
before\u filter
时,它给了我一个错误,建议我改用
prepend\u before\u filter
,这很有效。Rails 4:中似乎存在类似的方法,因此应该适合您。此外,我将元素转换为符号(而不是字符串),因此在您的示例中,它类似于
self.steps=Question.pull(:name).map(&:to_-sym)
。希望有帮助