2012-02-19 1 views
1

J'utilise acts_as_taggable_on dans mon application rails. Je voudrais que ces balises apparaissent dans la représentation to_json de mon modèle.Y compris les tags acts_as_taggable_on dans la sortie to_json d'un modèle

Par exemple, to_json d'une instance de mon modèle ressemble à ceci:

{"created_at":"2012-02-19T03:28:26Z", 
"description":"Please!", 
"id":7, 
"points":50, 
"title":"Retweet this message to your 500+ followers", 
"updated_at":"2012-02-19T03:28:26Z"} 

... et je voudrais qu'il ressemble à quelque chose comme ceci:

{"created_at":"2012-02-19T03:28:26Z", 
"description":"Please!", 
"id":7, 
"points":50, 
"title":"Retweet this message to your 500+ followers", 
"updated_at":"2012-02-19T03:28:26Z" 
"tags" : 
    {"id":1, 
     "name":"retweet"}, 
    {"id":2, 
     "name":"twitter"}, 
    {"id":3, 
     "name":"social"} 
} 

Mon code de contrôleur est juste la valeur par défaut que l'échafaudage me donne:

def show 
    @favor = Favor.find(params[:id]) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @favor } 
    end 
end 

Notez que je peux déjà accéder @ favor.tags dans le modèle, et @ favor.tags.to_json fonctionne comme prévu, j'avais juste besoin que les données soient incluses lors de la sortie @ favor.to_json.

Répondre

3

Vous pouvez passer des options à l'appel json en appelant to_json. Ou en redéfinissant as_json dans votre modèle de faveur.

render json: @favor.to_json(include: :tags)

2

Dans votre méthode faveur modèle override as_json.

def as_json(options={}) 
    super(:include => :tags) 
end 
Questions connexes