Bonjour: Est-ce que quelqu'un a une solution pour convertir un modèle acts_as_tree en json qui inclut tous ses nœuds? J'ai truqué en utilisant: include =>: children, mais cela ne descend qu'à un seul niveau. Une idée de comment itérer l'arbre entier?acts_as_tree et to_json or from_json
Répondre
Utilisez une aide (ou une méthode privée) qui est récursive et transforme vos modèles imbriqués en un hachage imbriqué, puis utilisez to_json
pour générer une chaîne json. J'ai eu besoin de générer Json dans une vue HTML/Erb, mais la même idée devrait s'appliquer si vous devez le générer à partir d'une action du contrôleur, ou utiliser un modèle Erb pour générer Json. J'avais aussi besoin d'un noeud racine (codé en dur), vous pouvez l'ignorer si ce n'est pas nécessaire.
categories.html.erb
<script type="text/javascript">
$(function(){
var json = {
id: "node00",
name: "New Pathway",
data: {},
children:
<%= @categories.select { |c| c.root? && !c.leaf? }.collect { |c| category_to_spacetree_json(c) }.to_json.html_safe %>
};
init(json);
});
</script>
categories_helper.rb
def category_to_spacetree_json(category)
hash = {
:id => category.id,
:name => category.name,
:data => '',
:children => []
}
unless category.leaf?
hash[:children] = category.children.public.collect { |c| category_to_spacetree_json(c) }
end
hash
end
Vous pouvez écrire votre propre méthode qui renvoie tous les descendants, mais il s'agit de l'un de ces cas où le type d'arborescence que vous utilisez sera plutôt inefficace. Si vous êtes préoccupé par les performances et les accès à la base de données, vous devriez regarder dans l'un des gems set imbriqués, ou les ancestry gem qui sont des moyens beaucoup plus efficaces pour récupérer des branches d'arbre.
- 1. Rails et association dans to_json
- 2. SubSonic "Or" et "AND"
- 3. MySQL Syntaxe et « OR » Performance
- 4. Tweaking Hash # to_json
- 5. Ruby to_json: arguments méthodes
- 6. To_Json overriding dans Ruby
- 7. to_json: inclure: commander?
- 8. Ultra-grand super acts_as_tree rails requête
- 9. acts_as_tree ne pas détruire les enfants
- 10. chaînes méthode Passe à to_json
- 11. AND, OR et NOT dans Solr Recherche
- 12. requête mysql avec AND, OR et NOT
- 13. Equivalent de Visual Basic et And et Or en C#?
- 14. Requête avancée (?) AND/OR
- 15. rails to_json un comportement inattendu pour include_root_in_json
- 16. Prototype startsWith OR
- 17. Rails: Hash # to_json - divisé sur plusieurs lignes?
- 18. Ruby on Rails problème to_json avec: comprennent
- 19. php 5 OR déclaration
- 20. rails to_json ne pas suivre scropes
- 21. Python Lambda avec Or
- 22. etree.findall: Recherche 'OR'?
- 23. Création de routes imbriquées pour les pages utilisant acts_as_tree
- 24. ActiveRecord: Commande "Or"?
- 25. opérateur OR en C#
- 26. MySQL OR question
- 27. oracle.web or oracle.database
- 28. Comment combiner deux modèles en un RoR acts_as_tree treeview?
- 29. glDrawPixels dans opengl or jogl
- 30. SQLAlchemy - INSERT OR REPLACE équivalent