2009-09-07 8 views
-1

hé là, j'essaie d'implémenter une interface glisser-déposer pour un ensemble imbriqué dans mon projet de rails. Je suis nouveau sur les rails alors portez-moi. mon code est fondamentalement identique à ce projet: http://gist.github.com/128779. mon problème est en partie à cette ligne:aidez un n00b à comprendre les rails, en particulier l'héritage, acts_as_nested_set, awesome_nested_set, sortable_element_for_nested_set

<% for child in root.direct_children do %> 

Je reçois NoMethodError pour direct_children qui est une méthode d'instance de acts_as_nested_set, je crois. À la console si j'essaye de créer une nouvelle instance de mon modèle, il est également incapable d'accéder aux méthodes d'instance acts_as_nested_set, donc je ne pense pas que le problème est dans le partiel mais dans le modèle.

Encore une fois, désolé si ma terminologie est fausse, je suis nouveau sur les rails. Quoi qu'il en soit, qu'est-ce que je fais de mal? J'ai "acts_as_nested_set" dans mon modèle, tout comme l'exemple gist ci-dessus, mais mon modèle ne semble pas agir comme un ensemble imbriqué. Comment puis-je réparer cela?

Merci!

Voici le code pour le modèle que je me sers (todo.rb):

class Todo < ActiveRecord::Base 
    acts_as_nested_set 
end 

Et voici la partie:

<% content_tag :li, :id => dom_id(root) do %> 
    <%= content_tag :span, root.text %> 
    <% content_tag :ul do %> 
     <% for child in root.direct_children do %> 
      <%= render :partial => "tree", :locals => {:root => child}%> 
     <%end %> 
    <%end unless root.direct_children.empty? %> 
<%end%> 

root est passé à la partie de la vue comme:

<%= render :partial => "tree", :locals => {:root => @root} %> 

et @root est défini dans le contrôleur comme:Encore une fois, le code est copié pour la plupart en gros avec très peu de modifications du lien GIST ci-dessus.

+0

À quelle racine faites-vous référence dans l'extrait de code? –

+0

En outre, nous devons voir plus de code, tel que le modèle en question. –

+0

Salut, merci! J'ai ajouté le code ci-dessus, s'il vous plaît laissez-moi savoir s'il y a autre chose nécessaire. –

Répondre

0

Ce que je fais de votre titre, c'est que vous utilisez un peu plus que acts_as_nested_set. Essayez de supprimer certains plugins et réessayez.

1

Quelques choses:

  • Avez-vous vérifié que vous avez installé le plug-in correctement? ./script/plugin install git://github.com/rails/acts_as_nested_set.git
  • Avez-vous configuré votre table correctement? Votre modèle doit avoir au moins les 3 colonnes suivantes par défaut (sauf si vous voulez les remplacer): parent_id, lft, rgt. Sans ces acts_as_nested_set va avoir du mal à comprendre ce qui se passe. Je vous suggère de lire la documentation en haut de this file parce que le readme ne dit pas squat, pas plus que ce gist d'ailleurs.
  • Si vous avez fait ce qui précède, avez-vous créé un élément racine (ne définissez pas le parent_id) et y avez ajouté au moins un enfant?

    m = Model.new 
    m.title = "My model's title" 
    m.save! 
    m2 = Model.new 
    m2.title = "My child" 
    m2.save! 
    m.add_child(m2) 
    

Je viens de faire un test rapide en utilisant ce qui précède, et ensuite j'ai pu faire des choses comme m.root? et m.direct_children. Bonne chance.

Questions connexes