2014-10-06 267 views
0

我是Rails的新手,感謝任何見解!更新Rails或Ruby的版本不是一個選項,我需要使用我的客戶端的當前版本。Rails + AJAX返回的HTML比預期的要多

的Ruby版本:1.9.3-P194,Rails的版本:3.2.18

我加載通過一個JavaScript/jQuery的Ajax調用動態HTML內容。當我從app/assets/javascripts/application.js進行Ajax調用時,一切正常。這裏的電話:

$.ajax({ 
     url: '/search/login', 
     cache: true, 
     success: function(html){ 
      console.log('SUCCESS: ', html); 
     } 
    }); 

稱爲HTML響應變量包含/search/login.html.erb內所有的HTML

不過,如果我動議到另一個JavaScript調用準確等文件app/assets/javascripts/search/jh.js,除了返回的HTML是LOT以外,一切似乎都正常。除了/search/login.html.erb中的內容外,它實際上包含整個HTML DOM樹,從<DOCTYPE></html>

有人可以幫我理解爲什麼會發生這種情況嗎?

+1

您是否在控制器的渲染語句中嘗試過'layout:false'?看起來更像是一個控制器問題,而不是一個jQuery問題。 – engineersmnky 2014-10-06 20:59:35

+0

你可以從搜索控制器發佈兩個方法的代碼:'login'和'jh'嗎? – Surya 2014-10-06 21:00:03

+0

@engineersmnky你釘了它!非常感謝。如果你留下你的評論作爲答案,我會選擇它。再次感謝! – ndcomix 2014-10-06 21:04:39

回答

2

您需要指定您不想爲此類型的Ajax調用呈現佈局,否則Rails會將其視爲包含應用程序或模板佈局的標準視圖請求。要做到這一點,你只需要以下添加到渲染動作控制器

render layout: false 

這告訴Rails只是沒有處理此控制器指定的應用程序佈局或其他模板html.erb文件。

相關問題