2010-05-10 4 views
2

Dans Rails 3 (version bêta 3 sur 1.8.7), lorsque j'appelle to_json sur une relation, j'obtiens une exception de référence circulaire. Convertir d'abord cette relation en un tableau, puis appeler to_json.Pourquoi obtenir une exception de référence circulaire lors de l'appel de to_json sur une ActiveRecord :: Relation

code qui échoue:

Model.where() de to_json (où le modèle est un modèle dans votre Rails 3 app)

Code qui fonctionne:..

Model.where() to_a .to_json

Ceci peut être reprographié sur la console.

Est-ce que quelqu'un d'autre a couru à ça? Est-ce prévu?

Répondre

0

J'ai eu le même problème, ne pouvait pas réparer, mais trouvé comment éviter, ce qui suit:

respond_to do |format| 
    response = @product.to_xml 
    format.xml { render :xml => response } 
    format.json { render :json => Hash.from_xml(response).to_json } 
end 

L'idée ici est de générer le format XML de la réponse, puis Hash il , puis formatez-le en JSON.

Cette approche m'a donné plus que prévu, puisque maintenant les résultats au format JSON ont exactement les mêmes données que celles au format XML.

Questions connexes