2012-11-10 37 views
1

當用戶點擊我的頁面上的按鈕時,我有以下方法通過AJAX請求調用。使用JqueryUI對話框渲染AJAX AJAX的類部分

def savings_easter_egg 
    @savings = params[:savings] if params[:savings] 
    return render :partial => "topics/savings", :locals => { :savings => @savings }  
end 

我想這個方法返回一個可以在JqueryUI的模態中顯示的部分。

$.ajax({ 
     type: 'GET', 
     url: '/topics/savings_easter_egg', 
     data: { 
     savings: data[key]['saving'] 
     } , 

     success: function(response) { 
     $(response).dialog({ 
      height: 840, 
      modal: true, 
     });    
     } 
    }); 

如上所示,我試圖使用來自我的控制器的響應來生成對話框,但我不確定這一點。文檔混淆了我一下:http://jqueryui.com/dialog/#modal

主題/ _savings_easter_egg.slim

#dialog-modal 
    p Hi 
    = params[:savings] 
    = @savings 

這部分,我想傳遞和顯示的模式。現在,我得到了一個模式,但它是一個沒有文字的細白線。我究竟做錯了什麼?

回答

1

jQuery UI對話框基於創建對話框時已經存在的DOM元素 - 對話框只是簡單地顯示了對話框的內容。一個已經是頁面DOM結構一部分的DIV。

如果你想在對話框中顯示你的部分,你首先必須將它插入到頁面,例如,用它

jQuery("#your_container").html(YOUR RENDERED PARTIAL) 

或替換現有容器(如果你有你的部分額外的容器元素在你的例子)

jQuery("#your_container").replaceWith(YOUR RENDERED PARTIAL) 

之後,您將能夠創建替換現有的元素含量這個容器元素的對話框

jQuery("#your_container").dialog() 

編輯:我認爲也可以使用動態內容,例如

jQuery("<p>Hello World</p>").dialog() 

但我不確定對話框是否會以相同的方式作出反應。我通常在頁面中使用一個對話框元素,並將其內容替換爲目前需要的內容。