2012-04-09 27 views
0

我目前正試圖在我的控制器之一中返回多個JSON對象。Rails使用<%=不按預期工作的JSON呈現JSON

@chromosomes = @organism.chromosomes.to_json 
    @file_data = current_user.files.to_json 
    respond_to do |format| 
    format.html 
    end 

然而,當我做前端:

<%= @chromosomes %> 

<%= @file_data %> 

我沒有得到一個JSON對象,而不是我得到的數據作爲一個字符串東西,如&報價等我試着解析字符串,如

console.log($.parseJSON("<%= @chromosomes %>")); 

但它仍然無法正常工作。這是因爲發回的請求是html嗎?

謝謝!

+0

您已編輯該問題,但答案仍然如下,請參閱下面的內容... – Snips 2012-04-09 14:31:56

回答

2

你的代碼應該是這個樣子,

respond_to do |format| 
    format.html index.html.erb 
    format.xml { render :xml => @organism.chromosomes) } 
    format.json { render :json => @organism.chromosomes) } 
end 
0

你只需要

render :json => @organism.chromosomes 

通過看着你編輯,我覺得你想要什麼下面是:

console.log($.parseJSON("<%= raw @chromosomes %>")); 
+0

謝謝,但是,我仍然沒有在前端輸入json對象。我已經用更多的細節更新了這個問題。再次感謝! – 2012-04-09 14:32:01

0

問題最終歸咎於Rails將json數據編碼爲字符串,這是默認值。爲了解決我使用的問題

<%= @chromosomes.html_safe %> 

在前端。關於這一點的進一步信息可以在這裏找到:

Weird JSON Javascript problem in Rails

0

這應該工作,爲Rails 2,

console.log($.parseJSON(<%= @chromosomes.dump %>)); 

爲Rails 3,

console.log($.parseJSON(<%= @chromosomes.dump.html_safe %>)); 

字符串#轉儲轉義字符並使parseJSON()工作。請注意,不需要引號。