我使用json渲染一些对象:
def index
if user_signed_in?
@todos = current_user.todos.find_all()
render :json => @todos
else
return nil
end
end
它实际上是这样做的,但是有一个问题。我得到了方形的brakets [] jround输出,一些插件或json查看器因为它们无法读取它。这里有一些示例输出:
[{"todo":{"name":"Test todo","created_at":"2010-11-24T07:40:07Z","updated_at":"2010-11-24T07:40:07Z","done":0,"id":1,"user_id":1}},{"todo":{"name":"Ali Test","created_at":"2010-11-24T07:40:30Z","updated_at":"2010-11-24T07:40:30Z","done":0,"id":2,"user_id":1}}]
提前感谢!
答案 0 :(得分:0)
你试过吗?
render :json => @todos.to_json
答案 1 :(得分:0)
要获取JSON输出,您需要渲染哈希而不是数组。 以下是关于转换的深入帖子:
What is the best way to convert an array to a hash in Ruby
OP语法快速摘要:
render :json => Hash[*@todos.flatten]
或不对称阵列
render :json => Hash[@todos.map {|key, value| [key, value]}]
在某些情况下,虽然这会增加你不想要的额外空值,你可能不得不打破你的阵列并使其变平,或者只是使用哈希[而不是[尽可能。]