我想使用controller#update更新模型。我想通过AJAX这样做,没有隐藏的表单或任何DOM元素来与我的JS数据保持同步。
如何通过jQuery ajax将数据提交给控制器#update?
我的JS:
$.ajax({
type: "PATCH",
url: "/uploads/" + current_upload.id,
data: {
"upload[user]": user.id,
"upload[upload]": current_upload.id
}
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
我的控制器:
def update
@upload = Upload.find(params[:id])
# update the model.
if @upload.update(upload_params)
redirect_to @post
else
render 'edit'
end
end
private
def upload_params
# permit! allows all attributes.
params.require(:upload).permit(:user)
end
错误:
User(#70101060061080) expected, got String(#70101055761460)
答案 0 :(得分:2)
将"upload[user]": user.id
更改为"upload[user_id]": user.id
。
在Rails中,它试图将user
(用户实例)指定为您通过user.id
传入的字符串,并抱怨类型不匹配。
答案 1 :(得分:0)
听起来您的请求参数将“upload”参数设置为“13”而不是哈希值。