2016-08-20 51 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確實有用,你知道他們爲什麼沒有完全渲染,只顯示它們的指針嗎?我更新問題以顯示它是如何呈現的。 –

相關問題