我正在尝试在我的一个控制器中返回多个JSON对象。
@chromosomes = @organism.chromosomes.to_json
@file_data = current_user.files.to_json
respond_to do |format|
format.html
end
然而,在我做的前端:
<%= @chromosomes %>
或
<%= @file_data %>
我没有获得JSON对象,而是将数据作为带有&amp; quote等字符串的字符串获取。我尝试解析字符串,例如
console.log($.parseJSON("<%= @chromosomes %>"));
但它仍然无效。这是因为发回的请求是html吗?
谢谢!
答案 0 :(得分:2)
您的代码看起来应该是这样的,
respond_to do |format|
format.html index.html.erb
format.xml { render :xml => @organism.chromosomes) }
format.json { render :json => @organism.chromosomes) }
end
答案 1 :(得分:0)
你只需要
render :json => @organism.chromosomes
通过看你编辑,我想你想要的是下面的内容:
console.log($.parseJSON("<%= raw @chromosomes %>"));
答案 2 :(得分:0)
问题最终在于Rails将json数据编码为字符串,这是默认值。解决我使用的问题
<%= @chromosomes.html_safe %>
在前端。有关这方面的更多信息,请访问:
答案 3 :(得分:0)
这适用于Rails 2,
console.log($.parseJSON(<%= @chromosomes.dump %>));
for Rails 3,
console.log($.parseJSON(<%= @chromosomes.dump.html_safe %>));
String#dump转义字符并使parseJSON()工作。请注意,不需要引号。