Rails使用<%=不按预期工作来呈现JSON

时间:2012-04-09 14:00:41

标签: ruby-on-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对象,而是将数据作为带有&amp; quote等字符串的字符串获取。我尝试解析字符串,例如

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

但它仍然无效。这是因为发回的请求是html吗?

谢谢!

4 个答案:

答案 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 %>

在前端。有关这方面的更多信息,请访问:

Weird JSON Javascript problem in Rails

答案 3 :(得分:0)

这适用于Rails 2,

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

for Rails 3,

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

String#dump转义字符并使parseJSON()工作。请注意,不需要引号。