2015-06-18 4 views
0

У меня есть мои рельсы создать действие:Rails Действие не Перенаправление

def create 
    @assessment = Assessment.new(user_id: current_user.id, patient_id: params[:assessment][:patient_id], template_id: params[:assessment][:template_id]) 

    @answers = params[:assessment][:answers] 

    if @assessment.save 

     @answers.each do |question, array| 
     @assessment.answers.create(question_id: question, content: array[0], tracking: array[1]) 
     end 

     redirect_to assessments_path 
    else 
     render :new 
    end 

    end 

Когда я отправляю к этой акции, @assessment становится созданный в базе данных (а также ответы), а журнал показывает:

Redirected to http://localhost:3000/assessments 
Completed 302 Found in 54ms (ActiveRecord: 15.8ms) 

Но вид в моем браузере не меняется. Как я могу заставить его перенаправить?

FYI это, как я вношу данные формы:

$("#new_assessment").find('input[name=commit]').on('click', function(e){ 

      e.preventDefault(); 
      var $inputs = $('#new_assessment :input'); 

      Array.prototype.clean = function(deleteValue) { 
      for (var i = 0; i < this.length; i++) { 
       if (this[i] == deleteValue) {   
       this.splice(i, 1); 
       i--; 
       } 
      } 
      return this; 
      }; 

      var template_id = gon.template.id; 
      var patient_id = gon.patient.id; 
      var answers = {}; 

      $('.question').each(function() { 

        var question = $(this).find('.question-field').data('question'); 
        var answer = $(this).find('.question-field').val(); 
        var trackable = $(this).find('.trackable').is(':checked'); 

        if (answer && answer.length > 0 && answer != "undefined") { 
        answers[question] = [answer, trackable]; 
        } 

      }); 



     $.ajax({ 
      url: "/assessments", 
      type: "POST", 
      data: {assessment:{template_id, patient_id, answers}}, 
      success: function(resp){ 
       console.log("success") }, 
      error: function(err) { 
       console.log("error"); 
      } 
      }); 



    }); 
+0

вы должны удалить "e.preventDefault();" в вашем javascript-коде, если вы хотите, чтобы ваша страница перезагрузилась? – rxing

+0

Но тогда форма подала бы обычный путь рельсов (без моего JS) –

+0

Просто nit: вы должны перенаправить на полный URL-адрес. Используйте 'redirect evaluationments_url', чтобы быть абсолютно правильным. –

ответ

1

В Ajax вызова вы должны использовать формат JS в контроллере

render js: "window.location = '#{assessments_path}'" 
0

Если это сообщение AJAX, вы не можете использовать Rails redirect_to. Вы должны использовать JavaScript для перенаправления. Это stackoverflow question может дать вам ответ.

format.html { redirect_to assessments_path } 
    format.js { render :js => "window.location.href = ('#{assessments_path)}');"} 
Смежные вопросы