2014-06-14 71 views
2

我试图通过row_to_json从我的Postgres数据库拉JSON,但是当我渲染使用这样的事情是:ActiveRecord将row_to_json渲染为转义字符串,如何渲染为纯JSON?

render :status => 200, :json => sports

[{"row_to_json"=>"{\"id\":1,\"name\":\"Basketball\"}"} 
{"row_to_json"=>"{\"id\":2,\"name\":\"Football\"}"} 
{"row_to_json"=>"{\"id\":3,\"name\":\"Baseball\"}"}] 

它把row_to_json的值作为转义字符串,主场迎战JSON。

有没有一种简单的方法将其转换成合适的JSON对象比做这样的事情的蛮力方式更好:

new_sports_array = Array.new() 
sports.each do |sport| 
    new_sports_array.push(JSON.parse(sport[:])) 
end 

我假设上述可在放不必要的税我的api。

谢谢!

回答

2

嘿,请试试这个,

new_sports_array = [] 
sports.select{|s| new_sports_array << JSON.parse(s['row_to_json'])} 
+0

是的,看起来像这样做是同样的事情,只是更多的Ruby方式 – Hawk

1

你可以使用标准的Rails的行动呢?

def show_sports 
    sports = Sports.where(conditions) 
    render json: sports 
end 
+0

我存储JSON在postgres中的JSON字段类型,并且当它从数据库中返回数据到我的Rails散列时,它总是将[field_name => {json_field},field_name => {json_field},...]这令人讨厌,因为我只想[{json_field},{json_field}等] – Hawk

1

如果你有一个JSON字符串,你应该能够做这样的事情:

render text: <your json string>, content_type: 'application/json' 

这将帮助你避免内置to_json调用Rails使。