2012-06-29 102 views
0

我用下面的代碼來創建印象模型的新實例:Rails的:成功AJAX POST,返回ID

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爲零 - 這在反射時當然在運行時爲零。但是,我還可以從數據庫中提取ID嗎?

回答

1

這樣做的一種方法是讓您的控制器代碼呈現json。例如,如果你創建的代碼壓根兒

render :json => @impression 

(可能是responds_to塊內),那麼數據將得到傳遞給你的成功的功能。如果你聲明作爲

function(data){ 
    ... 
} 

,並設置數據類型爲JSON,然後data將是你渲染JSON對象,你就能夠得到所有的印象的屬性,包括其ID。當然,你可以渲染任何你想要的json - 你不必把整個對象變成json。

+0

此解決方案似乎工作。當我有成功函數調用'alert(data)'時,我得到相應的id號。不幸的是,當我將函數設置爲'id = data'時,沒有任何反應。 ID不變。我已更新我的代碼片段,以顯示我如何聲明和檢查變量。任何想法可能會造成這種情況?無論哪種方式,我正在檢查你的答案。謝謝您的幫助! – nullnullnull

+0

想通了!我必須設置'async:false'。再次感謝。 – nullnullnull