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

この 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 を /students に変更します

于 2013-02-21T12:42:05.393 に答える
0

JSON オブジェクトを有効な文字列表現に変換します。

次に、この JSON 文字列を解析する必要があります。

Ruby on Rails で JSON を解析するにはどうすればよいですか?

于 2013-02-14T07:19:26.627 に答える
0

あなたの routes.rb には誤ったルーティングがあると思いidますnew

そのはず:

ルート.rb

resources "students" 

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

newこれにより、コントローラーでアクションが呼び出されますstudentsnewしたがって、アクションがstudentsコントローラーにどのコードを持っているかによって異なります。

あなたのコードの残りの部分は正しいようです。それでもエラーが発生する場合は、表示されているエラー メッセージとnewさらにアクション コードを表示してください。

于 2013-02-14T07:52:35.867 に答える