如何使用Ajax将json对象传递给控制器?
问题描述:
我有一个json object.I想通过传递这个值来创建一个新学生。如何将这个对象的值传递给控制器,在rails上使用ajax进行ruby? 这是我用来传递对象的代码。如何使用Ajax将json对象传递给控制器?
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路线
[[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
我怎么能走在控制器创建功能?
答
试试这个网址:
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");
}
});
更改网址/学生
答
我认为你的routes.rb是有错误的路由,这就是为什么你得到id
为new
。
它应该是:
的routes.rb
resources "students"
match "/students/new" => "students#new"
这将调用new
行动在students
控制器。所以这取决于您的new
动作在students
控制器中的代码。
其余的代码似乎是正确的。但是,如果您仍然收到错误消息,而不是显示您收到的错误消息,并且还会执行new
操作代码。
$阿贾克斯({ 网址: '/学生/新', 这是正确的 – Niths 2013-02-14 11:18:54
是的,它是正确的,会吗?调用学生控制器的新动作 – 2013-02-14 11:45:30
我用你的建议编辑了我的代码,但仍显示终端参数:{“id”=>“new”,“total_changes”=>“{\”Name \“:\”yut \ “,\”_ age \“:\”6 \“}”} id ='new'... – Niths 2013-02-14 11:47:57