如何强制rails识别方法的位置

时间:2010-07-29 20:24:48

标签: ruby-on-rails routes ruby-on-rails-plugins acts-as-taggable-on

我在我的应用程序中遇到问题,其中控制器正在调用方法并且服务器报告该方法不存在。

这是方法调用。无效的方法是tag.related_tags

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

Tag模型最初是在插件act-as-taggable-on中定义的。然后将其扩展到包含它的插件community_engine中。然后最后它在我的app目录中再次扩展。 related_tags方法位于community_engine插件的tag.rb文件中。

编辑:
这是错误消息

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 个答案:

答案 0 :(得分:1)

查看您提到的两个插件的代码,我认为模型层次结构并不像您期望的那样。 CommunityEngine标记模型不会扩展ActsAsTaggableOn::Tag。因此,您正在使用的Tag对象没有定义related_tags方法。