2009-05-12 5 views
3

J'expose certaines ressources via une simple API qui renvoie JSON. Je voudrais injecter le chemin vers chacune des ressources afin que le consommateur n'ait pas besoin de les construire. Exemple de sortie désirée pour quelque chose comme User.all.to_json:Comment ajouter des données supplémentaires aux enregistrements ActiveRecord en série vers JSON dans Rails?

users: [ 
    {user: { 
    id: 1, 
    name: 'Zaphod', 
    url: 'http://domain.com/users/1.json' 
    }}, 
    {user: { 
    id: 2, 
    name: 'Baron Munchausen', 
    url: 'http://domain.com/users/2.json' 
    }} 
]; 

Pour générer l'URL que je voudrais continuer à utiliser les aides et ne pollue pas les modèles avec ce genre d'information. Y a-t-il un moyen de faire cela? Ou je ferais mieux de simplement mettre cela dans le modèle?

Répondre

0

Avez-vous vérifié cela: http://json.rubyforge.org/?

class Range 
    def to_json(*a) 
    { 
     'json_class' => self.class.name, 
     'data'   => [ first, last, exclude_end? ] 
    }.to_json(*a) 
    end 

    def self.json_create(o) 
    new(*o['data']) 
    end 
end 
4

Si vous avez une méthode de modèle que vous souhaitez inclure dans la sérialisation JSON vous pouvez simplement utiliser l'appel to_json builtin avec le paramètre :methods:

class Range 
    def url 
    # generate url 
    ... 
    end 
end 

Range.find(:first).to_json(:methods => :url) 
Questions connexes