2012-06-04 76 views
0

我有一些JavaScript調用URL向請求發送到articles控制器的索引操作的URL mysite.com/articles.js。我需要將數據返回到JSON格式,但在此之前,JavaScript函數,我想通過渲染index.js.erb的如何呈現.js.erb模板並返回JSON數據

我通過jQuery調用URL更新頁面上的一些諧音

var url = '/articles.js 

$.get(url, function(newItemData) { 
    someOtherFunction(newItemData) 
} 

正在調用URL w/a .js結尾與發送AJAX請求不同(remote => true)?我有一些其他按鈕和鏈接通過remote => true發送ajax請求,並且.js.erb模板會根據請求自動呈現。有沒有辦法將URL調用爲ajax請求?

任何幫助將不勝感激。

謝謝!

回答

0

糾正我,如果我錯了,但它看起來像你試圖從你的控制器呈現兩個視圖:index.js.erb文件和JSON響應。這是不可能的,因爲Rails只支持一個render,redirect_tohead調用。

這意味着您需要更改JavaScript代碼以發送兩個請求:一個更新視圖(呈現index.js.erb),另一個返回您的JSON對象。

將請求提交給.js結尾網址是而不是與提交AJAX請求相同。正如你所提到的那樣,你需要設置remote: true,或者在你的JavaScript代碼中建立一個AJAX請求(如果你使用的是jQuery,則需要$.ajax())。

你也可以考慮看看Layouts and Rendering in Rails

希望有幫助!

+0

我知道Rails只支持一個渲染器或redirect_to調用她的請求,但返回的JSON數據和通過.js.erb模板更新的部分是從相同的數據集構建的。要求兩個單獨的請求會使數據庫檢索翻番,似乎是浪費。任何機會都有更好的方式讓我在相同的請求中處理這兩種情況?感謝您的快速回復! –

+0

不客氣!但是,你仍然試圖呈現兩個視圖(一個是'js.erb',一個是'.json')。爲避免出現兩個操作,您必須將JSON處理移至'.js.erb'視圖,或將視圖更新移至發出請求的JavaScript代碼表單。 –