我正在使用ActsAsTaggableOn为我的应用程序添加标记。除了我从这个宝石中获得的功能之外,我还想添加一个TagsController,并且基本上将标记作为我应用中的任何其他资源。命名空间控制器在Rails-3中导致错误
我创建tags_controller.rb包含
class ActsAsTaggableOn::TagsController < ApplicationController
# ...
end
,并在我的routes.rb我已经添加
resources :tags, :module => :acts_as_taggable_on
当我运行rake routes
我得到
tags GET /tags(.:format) {:action=>"index", :controller=>"acts_as_taggable_on/tags"} POST /tags(.:format) {:action=>"create", :controller=>"acts_as_taggable_on/tags"} new_tag GET /tags/new(.:format) {:action=>"new", :controller=>"acts_as_taggable_on/tags"} edit_tag GET /tags/:id/edit(.:format) {:action=>"edit", :controller=>"acts_as_taggable_on/tags"} tag GET /tags/:id(.:format) {:action=>"show", :controller=>"acts_as_taggable_on/tags"} PUT /tags/:id(.:format) {:action=>"update", :controller=>"acts_as_taggable_on/tags"} DELETE /tags/:id(.:format) {:action=>"destroy", :controller=>"acts_as_taggable_on/tags"}
...这对我来说都很合理。
然而,当我打本地主机:3000 /标签我得到这个错误:
LoadError (Expected MyApp/tags_controller.rb to define TagsController)
如果我尝试在控制台,以评估ActsAsTaggableOn::TagsController
我得到基本相同的错误:
LoadError: Expected MyApp/app/controllers/tags_controller.rb to define TagsController from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:492:in `load_missing_constant' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:183:in `block in const_missing' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:181:in `each' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:181:in `const_missing' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:503:in `load_missing_constant' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:183:in `block in const_missing' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:181:in `each' from ~/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:181:in `const_missing' from (irb):1 from ~/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.4/lib/rails/commands/console.rb:44:in `start' from ~/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.4/lib/rails/commands/console.rb:8:in `start' from ~/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.4/lib/rails/commands.rb:23:in `' from script/rails:6:in `require' from script/rails:6:in `'
什么我做错了吗?
唉,将控制器移动到与命名空间名称相同的文件夹不起作用。它会导致“未初始化的常量ActsAsTaggableOn :: TagsController”错误。 – KaptajnKold 2011-05-16 12:31:56
我需要名称空间,因为模型(来自gem)是名称空间。 – KaptajnKold 2011-05-16 12:33:08