狂欢 - 创建站点范围的首选项

时间:2013-04-30 14:27:56

标签: ruby-on-rails spree

对于任何定制Spree以满足他们需求的人来说,这可能是一项例行工作,但我很难用它。

我想创建一个存储产品数组的首选项,以便在主页中将它们显示为“特色产品”。我浏览了this guide,并且已经在我的应用程序树中的 lib / spree / 下创建了一个文件。该文件如下所示:

class Spree::HomepageConfiguration < Spree::Preferences::Configuration
  preference :featured_products, :string
end

之后,我在 application.rb 文件的autoload_paths中添加了lib / spree文件夹:

config.autoload_paths += %W(#{config.root}/lib/spree/)

最后,我在 config / initializers / 下创建了一个名为 homepage_configuration 的初始化程序,以配置首选项:

module Spree
  Spree::MyApp::Config = Spree::HomepageConfiguration.new
end

Spree::MyApp::Config[:featured_products] = ["a", "b"]

但是,当我运行服务器时,我收到了这个错误:

Expected C:/path/to/my/application/lib/spree/homepage_configuration.rb to define HomepageConfiguration (LoadError)

我不确定我做错了什么。欢迎任何建议。

我正在运行Rails 3.2.13 并使用 1-3-stable 分支中的Spree。

2 个答案:

答案 0 :(得分:1)

即使是一个非常古老的问题......我最近也被问过同样的问题(配置网站范围的狂欢首选项)。

至于报告的错误和提供的代码, lib / spree / homepage_configuration.rb 应为:

module Spree
    class HomepageConfiguration < Spree::Preferences::Configuration
      preference :featured_products, :string
    end
end

这是一个示例要点,其中包含我最近提供的配置示例https://gist.github.com/mumoc/55dce225244fb02363e2

答案 1 :(得分:0)

为什么不将它作为产品的属性?按照自己的方式进行操作需要每次要更改产品时重新启动服务器并更改代码。

我刚刚在产品说明中添加了一个复选框,以检查产品的推出时间,并向模型scope :featured, lambda { |*args| { :conditions => { :featured => true }, :limit => args.first || 6, :order => "RAND()" } }添加了一个范围,您可以随意检查和取消选中。

相关问题