在1.3中使用自定义主题扩展时未定义的方法`get_taxonomies'?

时间:2013-01-01 17:15:24

标签: spree

我使用以下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。一旦我删除文件它再次工作。任何建议,为什么这不起作用?或者我是否必须覆盖另一个文件?

谢谢!

1 个答案:

答案 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

这应该足以要求帮助者进入正确的位置并使其可供您使用。