渲染自定义json多态列表

时间:2013-07-24 12:21:14

标签: ruby-on-rails json

我有一个/tags.json,我想要渲染一个球员和球队的名单,使用以下我已经放入球员和球队模型。

def token
  "#{id}_#{self.class.name}"
end

标签控制器

def index
  @players = Player.all
  @teams = Team.all
  @tags = @teams + @players

  respond_to do |format|
     format.json { render json: @tags}
  end
end

但是如何在我的标签控制器中创建一个列表,所以我可以得到类似的东西

[
    {"name":"Bob","token":"1_Player"},
    {"name":"Yankees","token":"1_Team"}
]

我该怎么做?

修改

format.json { render json: @tags.as_json(only: [:name])}

渲染

[
    {"name":"Bob"},
    {"name":"Yankees"}
]

但我怎么能得到令牌?

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

@tags = []
Team.all.each do |team|
  @tags.push({name: team.name, tag: team.token})
end
Player.all.each do |player|
  @tags.push({name: player.name, tag: player.token})
end

respond_to do |format|
  format.json { render json: @tags}
end