Ruby on rails Rails:成功发布AJAX后,返回ID
我正在使用以下代码创建Impressions模型的新实例:Ruby on rails Rails:成功发布AJAX后,返回ID,ruby-on-rails,ajax,Ruby On Rails,Ajax,我正在使用以下代码创建Impressions模型的新实例: var id; $.ajax({ type: 'POST', url: '/impressions', data: {'impression[content]':tags[i].book.impression, 'impression[user_id]':current_user}, success: function(){id="<%= @impression.id %>";}, dataType: '
var id;
$.ajax({
type: 'POST',
url: '/impressions',
data: {'impression[content]':tags[i].book.impression, 'impression[user_id]':current_user},
success: function(){id="<%= @impression.id %>";},
dataType: 'html',
});
alert(id);
var-id;
$.ajax({
键入:“POST”,
url:“/impressions”,
数据:{'impression[content]':标记[i].book.impression,'impression[user\u id]':当前用户},
成功:函数(){id=”“;},
数据类型:“html”,
});
警报(id);
成功后,我希望它返回新实例的id号,但当前函数会导致运行时错误,声明@impression.id为nil——经过反射,在运行时当然为nil。但是,还有什么方法可以从数据库中提取id呢?一种方法是让控制器代码呈现json。例如,如果您的创建代码只是
render :json => @impression
(可能在响应_to
块中)然后该数据将传递给success函数。如果你宣布那是
function(data){
...
}
并将数据类型设置为json,然后,
data
将是您渲染的json对象,您将能够获得impression的所有属性,包括其id。当然,您可以渲染您想要的任何json-您不必将整个对象转换为json。此解决方案似乎有效。当我调用成功函数“警报(数据)”时,我会得到相应的id号。不幸的是,当我将函数设置为'id=data'时,什么也没有发生。id不变。我已经更新了代码片段,以显示如何声明和检查变量。你知道是什么引起的吗?不管怎样,我都在检查你的答案。谢谢你的帮助!明白了!我必须设置“async:false”。再次感谢。