2016-08-20 40 views
1

因此,在过去的几个小时里,我一直在靠墙敲打我的头部,试图获得它。另外,当我知道下面的事情名称时,我会更改问题的名称。Rails - 返回嵌套属性的所有值,而不仅仅是'指针'

第一个问题,这叫什么?从数据库返回的#<Comment:0x007fda3aaeb7c8>

其次,我试图返回(呈现json)包含子注释的评论。

事情是这样的:

[ 
    { 
    id: 1, 
    title:'title', 
    body:'body' 
    }, 
    { 
    "#< Comment:0x007fda3b3517f0>": {}, 
    "#< Comment:0x007fda3b3517f0>": {}, 
    } 
] 

如何返回这些评论的价值?当我把他们在控制台它显示了他们的属性和值,就像这样:

puts comments[0][1] 

{#<Comment id: 17, body: "Another Reply Test", created_at: "2016-08-20 04:05:16", updated_at: "2016-08-20 04:05:16", parent_id: 13, user_id: 54>=>{}, #<Comment id: 18, body: "Another Reply Test", created_at: "2016-08-20 04:05:16", updated_at: "2016-08-20 04:05:16", parent_id: 13, user_id: 54>=>{}} 

但如果我尝试对它们进行修改的话 - 像to_a或to_json - 它只是打击了(因为缺少一个更好的项)像这样:

puts comments[0][1].to_a 
#<Comment:0x007fda3b1911b8> 
{} 
#<Comment:0x007fda3b190fd8> 
{} 

我使用Postgres的,和我使用closure_tree的hash_tree到的意见进行排序。

任何建议将非常感激,尤其是对第一个问题。

编辑: 的DEF索引返回的意见:

def index 
     if request.headers["type"] == 'music' 
      comments = Comment.where("song_id = ?", request.headers["id"]).hash_tree.to_a 
      comments.each do |comment| 
       puts comment[1] #shows all attributes and values 
       puts comment[1].to_a #blows up 
       puts comment[1].to_s #works 
      end 
     end 
     if comments 
      render json: {status:200, success:true, comments:comments} 
     else 
      render json: {status:404, success:false} 
     end 
end 

回答

0

这个问题的答案我的蒋张关系是使用.as_json.merge!(children=>[])然后把所有的基础注释到上面,然后推到上述评论

这里有兴趣的人回购: https://github.com/jrothrock/comments/

1

即输出是一个输出的默认字符串表示 - 类名加底层对象的原始指针值。你试图做的一些事情(例如转换为json)尝试将它们的输入转换为字符串(通过to_s方法)

它看起来像你有评论作为哈希键,如果输出应该是json,那么这是没有意义的 - JSON中的键必须是字符串。

+0

唉唉,好吧,谷歌搜索我的出路可能是不可能的。这只是我在Postman中得到的结果,我不相信它们是实际的字符串,因为这些投入是可行的。另外,to_s确实有用,你知道他们为什么没有完全渲染,只显示它们的指针吗?我更新问题以显示它是如何呈现的。 –

相关问题