尝试从控制器增加ID

时间:2016-01-30 21:21:43

标签: ruby-on-rails

我对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

我没有嫁给这个可能不太优雅的解决方案,并对如何实现它的任何想法持开放态度。谢谢

1 个答案:

答案 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