Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:成功发布AJAX后,返回ID_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails Rails:成功发布AJAX后,返回ID

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: '

我正在使用以下代码创建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: '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”。再次感谢。