2015-07-02 2 views
2

Я нашел почти то, что мне нужно было в предыдущем вопросе: Wicked Wizard dynamic step orderрубин на рельсах 4 - Злая Мастер _Totally_ динамического шаг заказ

К сожалению, я до сих пор борюсь с моей проблемой. Я хочу, чтобы мой Wicked Wizard имел полностью динамический порядок шагов (кроме первого шага). Каждый ответ является элементом базы данных, относящимся к каждому элементу базы данных. Я хочу использовать атрибут next_question из Response, который выбран для определения того, какой шаг будет следующим.

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). Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^