2016-01-30 4 views
0

Я довольно новичок в Rails, поэтому, извините, если мне нужно быть более ясным с чем угодно. Я пытаюсь создать приложение для опроса, где администратор добавляет к опросу разные вопросы, а затем пользователь отвечает на них. Проблема, с которой я сталкиваюсь, заключается в том, когда пользователь отвечает на вопрос, который я хочу, чтобы они были приняты к следующему вопросу, который в этом случае был бы следующим вопросом в индексе. Это то, что создать путь выглядит в моих ответах контроллерпытается увеличить ID от контроллера

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

'Question.find (PARAMS [: question_id] .to_i + 1)' – max

ответ

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 
+0

Обратите внимание, что вы используете рендеринга, где вы должны перенаправлять - и передавая URL для визуализации в предложении еще. Возможно, вы захотите прочитать разницу. – max

+0

Работал, как шарм, большое вам спасибо! – mrdavidharms

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