伙计们,首先让我告诉你们,我是狂欢的新手,所以我的问题对你们大多数人来说可能听起来很愚蠢。例如,我想自定义 home_controller.rb 中的“索引”方法,我知道正确的方法是使用装饰器。所以我创建了这个文件 app/controller/home_controller_decorator.rb。我在里面
# app/controller/home_controller_decorator.rb
HomeController.class_eval do
def index
# Empty method
end
end
原始的狂欢指数方法看起来像
def index
@searcher = Spree::Config.searcher_class.new(params)
@products = @searcher.retrieve_products
respond_with(@products)
end
我希望当我重新启动添加了 _decorator 的服务器时,它会在主页上显示没有产品,或者会崩溃。应用此装饰器并启动服务器时,我收到此消息
agop@linux-as2q:~/Desktop/spp> rails server -p 3000
/home/agop/Desktop/spp/app/controllers/home_controller_decorator.rb:1:in `<top (required)>': uninitialized constant Spree::BaseController (NameError)
from /home/agop/Desktop/spp/lib/spree_site.rb:5:in `block in <class:Engine>'
from /home/agop/Desktop/spp/lib/spree_site.rb:4:in `glob'
from /home/agop/Desktop/spp/lib/spree_site.rb:4:in `<class:Engine>'
from /home/agop/Desktop/spp/lib/spree_site.rb:2:in `<module:SpreeSite>'
from /home/agop/Desktop/spp/lib/spree_site.rb:1:in `<top (required)>'
from /home/agop/Desktop/spp/config/application.rb:11:in `<class:Application>'
from /home/agop/Desktop/spp/config/application.rb:10:in `<module:Spp>'
from /home/agop/Desktop/spp/config/application.rb:9:in `<top (required)>'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:28:in `require'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:28:in `block in <top (required)>'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:27:in `tap'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:27:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
我可能没有按照 spree 期望的方式编写装饰器。在 home_controller.rb 索引方法上应用这个装饰器的正确方法是什么?