ruby-on-rails-3 – 命名空间控制器在Rails-3中导致错误
发布时间:2020-12-17 01:59:09 所属栏目:百科 来源:网络整理
导读:我正在使用ActsAsTaggableOn为我的应用程序添加标记.除了我从这个gem获得的功能,我还想添加一个TagsController,并基本上将标签视为我的应用程序中的任何其他资源. 我创建了包含的tags_controller.rb class ActsAsTaggableOn::TagsController ApplicationCont
我正在使用ActsAsTaggableOn为我的应用程序添加标记.除了我从这个gem获得的功能,我还想添加一个TagsController,并基本上将标签视为我的应用程序中的任何其他资源.
我创建了包含的tags_controller.rb class ActsAsTaggableOn::TagsController < ApplicationController # ... end 在我的routes.rb我添加了 resources :tags,:module => :acts_as_taggable_on 当我运行rake路线时,我得到了 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"} ……这对我来说都很合理. 但是,当我点击localhost:3000 / tags时,我收到此错误: 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 `' 我究竟做错了什么? 解决方法
Rails希望模块和类位于其命名空间的目录中.因此,您应该将您的控制器,视图和帮助程序移动到acts_as_taggable_on目录中:
> app / controllers / acts_as_taggable_on / tags_controller.rb 我不确定你为什么要这个命名空间.如果您只想在现有模型上创建REST操作,则可以生成scaffold_controller.例如: rails generate scaffold_controller Tag name:string (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |