1

我有一个 json 对象。我想通过传递这个值来创建一个新学生。如何在 ruby​​ on rails 中使用 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
  };

}

i 终端有一些错误。表明

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

id 被视为 new.Rake 路由

[nithinv@ast297 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

3 回答 3

4

试试这个网址:

 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");
      }
    });

将网址更改为 /students

于 2013-02-21T12:42:05.393 回答
0

它完全按照您的要求执行 - 将 JSON 对象转换为有效的字符串表示形式。

现在您需要解析这个 JSON 字符串:

如何使用 Ruby on Rails 解析 JSON?

于 2013-02-14T07:19:26.627 回答
0

我认为你的 routes.rb 有错误的路由,这就是你得到idas的原因new

它应该是:

路线.rb

resources "students" 

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

这将在您的控制器中调用new操作。students所以这取决于你的new动作在students控制器中有什么代码。

您的其余代码似乎是正确的。但是,如果您仍然收到错误,则比显示您收到的错误消息以及new进一步的操作代码。

于 2013-02-14T07:52:35.867 回答