2013-10-02 25 views
4

我有我的jQuery AJAX的成功,jQuery的AJAX呈現局部與軌道查看

success: function(data) { 
    $('#someId').html(data); 
} 

我在_information.html.erb名的部分文件

我如何使我的阿賈克斯成功響應導軌局部視圖(information)。

顯示大多數這樣

$('#holderDiv').empty().append('<ul> <%= j render @comments %> </li>')

一些資源,但我並沒有感到舒服。任何其他方式來解決它。

回答

8

UPDATE 以下是對您的意見的更多信息。

首先,請在Javascript上閱讀此Rails Guide以瞭解更多信息。

update.js.erb是你的看法。您的視圖中沒有update.html.erb文件,控制器中的format.js的respond_to塊會將update.js.erb(格式爲javascript代碼)發送回您的jquery函數。

update.js.erb可能包含純javascript。然而,它被轉換爲JavaScript之前的服務器處理,所以你可以嵌入任何你想要的ruby代碼。該紅寶石代碼被轉換爲JavaScript。

如果您使用chrome開發人員工具,則可以在運行jquery調用後查看「網絡」選項卡。您會看到一個新的條目出現在您剛剛完成的AJAX調用中。如果你點擊該條目,你會看到返回的JavaScript。

我已經更新了下面的update.js.erb文件,以顯示如何將常規JavaScript代碼放入.js.erb文件。第一行是javascript。第二行是服務器轉換爲javascript的ruby代碼。因此,當它到達您的瀏覽器時,整個update.js.erb文件已被轉換爲javascript。

希望幫助...

原件回答以下:

選項1:

假設你的jQuery成功功能連接到一個控制器的動作成功完成(我將使用編輯操作作爲示例),您將創建一個名爲update.js.erb的視圖,該視圖將在成功編輯後調用。

控制器:

if @user.update_attributes(params[:user]) 
    respond_to do |format| 
     format.html { redirect_to @user, notice: "Successfully updated user." } 
     format.js 
    end 
else 
    # ... 
end 

因爲這是正在從JavaScript調用,你在respond_to代碼塊format.js,update.js.erb將自動被調用。

update.js。ERB:

console.log('see... this is a regular javascript call.'); 
<%= render partial: 'information', format: 'js' %> 

選項2

你所包括的片段:

$('#holderDiv').empty().append('<ul> <%= j render @comments %> </li>') 

只會在js.erb文件,其中最先處理的嵌入式Ruby代碼的工作,然後轉換成JavaScript代碼。這將在一個情況下工作,如:

控制器:

def create 
    user = User.new(params[:user]) 

    respond_to do |format| 
     if @user.save 
      @comments = 'some comments to display!' 
      format.js 
     else 
      # ... 
     end 
    end 
end 

create.js.erb:

$('#holderDiv').empty().append('<%= j render @comments %>') 
+2

在方案1中,您可以請拆分如何'控制器,JS,view'文件應該看起來很困惑我 – overflow

+1

你的回答真的幫了我很多......非常感謝:) –