0

我使用以下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#new 中的 NoMethodError - 未定义的方法“get_taxonomies”

该错误来自我在扩展中覆盖的文件views/spree/shared/_main_nav_bar.html.erb。一旦我删除文件,它就会再次工作。任何建议,为什么这不起作用?还是我必须覆盖另一个文件?

谢谢!

4

1 回答 1

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

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

于 2013-01-11T16:24:34.667 回答