1

Je rencontre des problèmes dans mon application lorsqu'un contrôleur appelle une méthode et que le serveur indique que la méthode n'existe pas.Comment puis-je forcer les rails à reconnaître l'emplacement d'une méthode?

Ceci est l'appel de méthode. La méthode ne fonctionne pas est tag.related_tags

@related_tags = @tags.collect { |tag| tag.related_tags }.flatten.uniq 

Le modèle Tag est défini à l'origine dans un acte-as-tagable-du plug-in. Il est ensuite étendu à l'intérieur du plugin qui le contient, community_engine. Puis enfin, il est étendu à nouveau dans mon répertoire de l'application. La méthode related_tags est située dans le fichier tag.rb du plugin community_engine.

Edits:
Voici le message d'erreur

undefined method `related_tags' for #<ActsAsTaggableOn::Tag id: 26, name: "sql"> 

Et la trace de la pile

c:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/attribute_methods.rb:260:in `method_missing' 
c:/Users/Teddy/railCode/careercup/app/controllers/tags_controller.rb:80:in `show' 
c:/Users/Teddy/railCode/careercup/app/controllers/tags_controller.rb:80:in `collect' 
c:/Users/Teddy/railCode/careercup/app/controllers/tags_controller.rb:80:in `show' 
+0

Pouvez-vous coller une trace de pile montrant l'exception de méthode manquante? Il se peut que '@ tags' soit composé d'objets Array, pas d'objets Tag. – tadman

Répondre

1

En regardant le code des deux plug-ins que vous mentionnez, je ne pense pas que les travaux de la hiérarchie de modèle comment vous vous attendez. Le modèle de tag CommunityEngine ne s'étend pas à ActsAsTaggableOn::Tag. Par conséquent, les objets de balise avec lesquels vous travaillez n'ont pas de méthode related_tags définie.

+0

À l'intérieur de la balise CommunityEngine Je mets 'require_dependency File.dirname (__ FILE__) + '/../../ plugins/acts_as_taggable_on/lib/acts_as_taggable_on/tag.rb'' J'utilise aussi le plugin desert qui si je comprendre correctement, prend soin d'étendre les modèles. – Teddy

Questions connexes