2013-07-24 55 views
1

我有一個/tags.json,在那裏我想渲染一個球員和球隊列表,使用以下我已經放在球員和球隊模型。渲染自定義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"} 
] 

但我怎麼能得到令牌?

回答

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