1

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

这是方法调用。不起作用的方法是 tag.related_tags

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

Tag 模型最初是在一个 plugin 中定义的。然后在包含它的插件 community_engine 中扩展它。最后它在我的应用程序目录中再次扩展。方法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'
4

1 回答 1

1

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

于 2010-07-30T03:32:17.113 回答