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

これを行う 1 つの方法は、コントローラー コードで json をレンダリングすることです。たとえば、作成コードが単に

render :json => @impression

(おそらくresponds_toブロック内)そのデータは成功関数に渡されます。それを次のように宣言すると

function(data){
    ...
}

dataType を json に設定するdataと、レンダリングした json オブジェクトになり、ID を含むインプレッションのすべてのプロパティを取得できます。もちろん、任意の json をレンダリングできます。オブジェクト全体を json にする必要はありません。

于 2012-06-29T21:35:24.223 に答える