Как я могу заставить рельсы распознать местоположение метода - PullRequest
1 голос
/ 30 июля 2010

У меня проблемы с приложением, когда контроллер вызывает метод, а сервер сообщает, что метод не существует.

Это вызов метода.Метод, который не работает, это tag.related_tags

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

Модель тега изначально определена в подключаемом модуле действует как тег.Затем он расширяется внутри плагина, который его содержит, community_engine.Затем, наконец, он снова распространяется в моем каталоге приложений.Метод related_tags находится внутри файла tag.rb плагина community_engine.

Правки:Вот сообщение об ошибке

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

И трассировка стека

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'

1 Ответ

1 голос
/ 30 июля 2010

Глядя на код двух упомянутых вами плагинов, я не думаю, что иерархия моделей работает так, как вы ожидаете. Модель CommunityEngine Tag не распространяется на ActsAsTaggableOn::Tag. Таким образом, для объектов Tag, с которыми вы работаете, не определен метод related_tags.

...