Как я могу заставить рельсы распознать местоположение метода

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

Это вызов метода. Метод не работает, это 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 ответ

Решение

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

Другие вопросы по тегам