0

我正在使用以下代码创建 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);

成功后,我希望它返回新实例的 id 号,但是当前函数会导致运行时错误,指出 @impression.id 为 nil——经过反思,它在运行时当然为 nil。不过,我还能如何从数据库中提取 id 呢?

4

1 回答 1

1

一种方法是让您的控制器代码呈现 json。例如,如果您的创建代码只是做了

render :json => @impression

(可能在一个responds_to块内)然后该数据将传递给您的成功函数。如果您声明为

function(data){
    ...
}

并将 dataType 设置为 json,然后data将是您呈现的 json 对象,您将能够获得所有展示的属性,包括其 id。当然你可以渲染任何你想要的 json - 你不必把整个对象变成 json。

于 2012-06-29T21:35:24.223 回答