我对Rails相当新,所以如果我需要对任何事情更清楚,我很抱歉。我正在尝试创建一个调查应用,其中管理员向调查添加不同数量的问题,然后用户回答它们。我遇到的问题是当用户回答一个问题时我希望将它们带到下一个问题,在这种情况下,这将成为索引中的下一个问题。这就是我的答案控制器中创建路径的样子
def create
question = Question.find(params[:question_id])
@answer = question.answers.new(answer_params)
if @answer.save
flash[:notice] = 'answer saved'
render :'question/(question.id + 1)/answers/new'
else
@question = Question.find(@answer.question_id)
@answers = @question.answers
flash[:notice] = @answer.errors.full_messages.join(". ")
render :'question/(:question_id + 1)/answers/new'
end
end
我没有嫁给这个可能不太优雅的解决方案,并对如何实现它的任何想法持开放态度。谢谢
答案 0 :(得分:1)
让我们假设您已经设置了使用resources
resources :questions do
resources :answers
end
这为您提供了一个名为new_question_answer_path
的辅助方法,可用于重定向。
def create
@question = Question.find(params[:question_id])
@answer = @question.answers.new(answer_params)
if @answer.save
if nq = Question.find_by(id: @question.id + 1)
redirect_to new_question_answer_path(question_id: nq)
else
# do something else
end
else
render :new
end
end