我使用以下gemfile:
gem 'spree_gateway', :github => 'spree/spree_gateway'
gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => 'edge'
gem 'spree_theme_v1', :path => '../spree_theme_v1'
当使用我使用命令“spree extension theme_v1”创建的最后一个“spree_theme_v1”gem时,我无法再浏览登录和帐户路由。而是我收到以下错误信息:
Spree / user_sessions中的NoMethodError #new - 未定义方法`get_taxonomies'
错误来自我在我的扩展程序中覆盖的文件views / spree / shared / _main_nav_bar.html.erb。一旦我删除文件它再次工作。任何建议,为什么这不起作用?或者我是否必须覆盖另一个文件?
谢谢!
答案 0 :(得分:2)
问题是gem没有从spree加载products_helper.rb:https://github.com/spree/spree/tree/master/core/app/helpers/spree
您可以将helper 'spree/products'
添加到失败的控制器(在您的情况下有关设计的内容)。
我将从spree_essential_cms向您展示我重新定义的PagesController,也许有帮助:
class Spree::PagesController < Spree::BaseController
helper 'spree/products'
def show
...
end
end
如前所述http://osdir.com/ml/spree-user/2013-01/msg00053.html你也可以在app / controllers中创建一个装饰器,并调用add_products_helper_decorator.rb,然后用这个内容填充它:
[Spree::UserPasswordsController, Spree::UserRegistrationsController, Spree::UserSessionsController].each do |klass|
klass.class_eval do
helper 'spree/products'
end
end
这应该足以要求帮助者进入正确的位置并使其可供您使用。