2013-02-14 5 views
1

У меня есть объект json. Я хочу создать нового ученика, передав это значение. Как передать значение этого объекта контроллеру с помощью ajax в ruby ​​on rails? Это код, который я использовал для передачи объекта.Как передать объект json контроллеру с помощью ajax?

self.save = function() { 
     var dataToSave = { 
        Name: self.firstName(), 
        _age: self.Age() 
       } 
     alert(JSON.stringify(dataToSave)) 
     $.ajax({ 
     url: '/students/new', 
     dataType: 'json', 
     type: 'PUT', 
     data: {total_changes: JSON.stringify(dataToSave)}, 
     success: function(data) { 
      alert("Successful"); 
      }, 
      failure: function() { 
      alert("Unsuccessful"); 
      } 
     }); 
     // TODO send request 
    }; 

} 

я Существует некоторая ошибка в терминале. Он показывает

Parameters: {"id"=>"new", "total_changes"=>"{\"Name\":\"hu\",\"_age\":\"7\"}"} 

идентификатор берется new.Rake маршрутов

[[email protected] jquery_country]$ rake routes 
    students GET /students(.:format)   students#index 
       POST /students(.:format)   students#create 
    new_student GET /students/new(.:format)  students#new 
edit_student GET /students/:id/edit(.:format) students#edit 
     student GET /students/:id(.:format)  students#show 
       PUT /students/:id(.:format)  students#update 
       DELETE /students/:id(.:format)  students#destroy 

контроллер

def new 
    @student = Student.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render :json => @student } 
    end 
    end 

Как я могу пойти, чтобы создать функцию в контроллере?

ответ

4

Попробуйте этот URL:

alert(JSON.stringify(dataToSave)) 
    $.ajax({ 
    url: '/students', 
    dataType: 'json', 
    type: 'PUT', 
    data: {total_changes: JSON.stringify(dataToSave)}, 
    success: function(data) { 
     alert("Successful"); 
     }, 
     failure: function() { 
     alert("Unsuccessful"); 
     } 
    }); 

Изменить URL для/студентов

0

Он выполняет именно то, что вы просите об этом - преобразует объект JSON в допустимое строковое представление.

Теперь вам нужно разобрать эту строку JSON:

How do I parse JSON with Ruby on Rails?

0

Я думаю, что ваш routes.rb испытывает ложный маршрут, и именно поэтому вы получаете id в new.

Оно должно быть:

routes.rb

resources "students" 

match "/students/new" => "students#new" 

Это будет вызывать new действие в вашем students контроллера. Так что это зависит от того, какой код у вашего new есть в контроллере students.

Остальная часть вашего кода кажется правильной. Но если вы по-прежнему получаете ошибку, чем сообщение об ошибке, которое вы получаете, а также код действия new.

+0

$ .ajax ({ URL: '/ студентов/новый', это правильно – Niths

+0

Да, это правильно и будет? вызовите новое действие контроллера ученика. –

+0

Я редактировал свой код с вашим предложением, но все же показывает терминалы Параметры: {"id" => "new", "total_changes" => "{\" Name \ ": \" yut \ ", \" _ age \ ": \" 6 \ "}"} id = 'new' .... – Niths

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