Как я могу заставить рельсы распознать местоположение метода
У меня возникли проблемы в приложении, где контроллер вызывает метод, а сервер сообщает, что метод не существует.
Это вызов метода. Метод не работает, это 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
метод определен.