我发送一个JQuery AJAX调用,如下所示,以更新ActiveRecord DB:中的记录
var url_out = '/users/' + args.item.id;
$.ajax({
url: url_out,
type: 'POST',
method: 'PUT',
data: args.item,
success: function(dat) {
alert("did it");
}
在用户控制器中,我有这样的:
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
因此,我需要将args.item中的数据作为params[:user]传递。可以使用AJAX调用传递命名参数吗?
我可能错了,但我知道Rails实际上是通过添加值为"PUT"的隐藏参数_method来模拟http谓词,而实际的请求是POST(由于一些浏览器不支持所有谓词)
因此,您可以尝试发布并添加一个参数_method:"PUT"
我要感谢@Dom和@Eduard的帮助。事实证明,我需要做这样的事情:
x_out = {};
x_out["first_name"] = args.item.first_name;
x_send = {};
x_send["user"] = x_out;
这让我可以将命名参数传递给控制器中的更新方法。