在json jbuilder视图文件中打印关联的映射数据

时间:2013-11-03 15:45:12

标签: ruby-on-rails json ruby-on-rails-4 jbuilder

我有一个视图文件photo_feed.html.erb,使用以下内容打印我需要的内容:

<% @photo_feed.each do |feed| %>

<%= feed.id %>
<%= feed.username %>
<%= feed.photo_filename %>
<%= feed.comments_count %>
<%= feed.comments.map{|x| [x.username, x.comment]} %>

<% end %>

可行,并为每张照片输出数组数组中的注释。

现在我的目标是使用jbuilder在json中输出它,我无法弄清楚如何打印数组。

json输出应该类似于:

  

[{ “ID”:1, “用户名”: “鲍勃”, “photo_filename”: “img.jpg”, “comments_count”:2,[[ “用户名”: “泰德”, “注释”:”你好   特德,你   朋克 “] [” 用户名。 “:” 卡尔”, “注释”: “愤怒”]]},{ “ID”:2 “用户名”: “LISA”, “photo_filename”: “img2.jpg”, “comments_count”:1,[[ “用户名”: “明白了”, “注释”: “嗒嗒”]]}

所以我的问题是:如何在json.jbuilder文件中打印关联的映射数据?

1 个答案:

答案 0 :(得分:0)

应该是这样的:

json.array!(@photo_feed) do |feed|
  json.extract! feed, :id, :username, :photo_filename, :comments_count
  json.comments feed.comments do |json, comment|
    json.(comment, :username, :comment)
  end
end

查看此railscast - http://railscasts.com/episodes/320-jbuilder