2011-10-12 48 views
0

我有一個Ruby on Rails應用程序。點擊一個按鈕,我有一些應該返回JSON的AJAX調用。從紅寶石輔助函數返回JSON到javascript

這裏是代碼中的相關行:

文件 「index.js.erb的」:

var myJson = <%= chart_data %>; 

文件 「parameter_helper.rb」:

module ParameterHelper 
    def chart_data 
    valRet1 = { 
     :name => "Total Traffic", 
     :data => [ 
     ['Sep 9, 1970', 0], 
     ['Sep 14, 1970', 0.94], 
     ['Sep 20, 1970', 0.46] 

    ] 
    } 

    valRet2 = [1, 2] 

    return valRet1 

    end 
end 

的問題是,當我從chart_data返回valRet2時,我得到index.js.erb文件中所需的數組。但是,如果我嘗試返回valRet1,我會收到錯誤。

我的ActiveSupport :: JSON.encode,jQuery.parseJSON發揮各地,我的JSON對象轉換爲字符串和轉義引號等似乎沒有任何工作。

以下導致錯誤:

return '[["Sep 9, 1970", 0], 
     ["Sep 14, 1970", 0.94], 
     ["Sep 20, 1970", 0.46]]' 

以下也導致錯誤:

result = [['Sep 9, 1970', 0], 
      ['Sep 14, 1970', 0.94], 
      ['Sep 20, 1970', 0.46]] 
return '"' + ActiveSupport::JSON.encode(result) + '"' 

以下正確返回:

return "[['Sep 9, 1970', 0], 
     ['Sep 14, 1970', 0.94], 
     ['Sep 20, 1970', 0.46]]" 

陣列(優選散列)需要(在數據庫中取值),因此不能成爲字面意思在上面正確返回數據的情況下。

幫助將不勝感激。

環境:

OS: Windows 7 
Rails: 3.1.0 
Ruby: 1.9.2p290 (2011-07-09) [i386-mingw32] 

問候,

伊姆蒂亞茲

回答

0

使用:to_json爲陣列

valRet1.to_json 

或從控制器的方法:

respond_to do |format| 
    format.json do 
    render :json => valRet1 
    end 
end 
+0

valRet1.to_json不起作用。 – imtiaz

+0

哦,加上'寶石「json''你'Gemfile'運行'束install' –

+0

仍然沒有工作。我也嘗試過ActiveSupport :: JSON.encode(valRet1)。另外,valRet1是一個散列。 – imtiaz

0

好的。我發現以下工作:

valRet2 = [["'Sep 9, 1970'", 0], 
    ["'Sep 14, 1970'", 0.94], 
    ["'Sep 20, 1970'", 0.46]] 

所以這個問題部分解決了。還在尋找一個解決方案,以返回一個JSON對象的jQuery/JavaScript可以通過調用瞭解,如:

var returnedJson = <%= chart_data %>; 
+0

那麼,我的查詢的正確答案是在這篇文章中:http://stackoverflow.com/questions/3757457/handling-json-in-js-erb-template-in-rails-3。 – imtiaz