【问题标题】:Overriding Spree Assets覆盖 Spree 资产
【发布时间】:2014-03-31 08:58:22
【问题描述】:

我正在使用 spree 2.1.5、rails 4.0.2、sass-rails 4.0.0。

http://guides.spreecommerce.com/developer/asset.html 的 spree 文档表明使用了 vendor/assets/stylesheets 文件夹。但是,我在 Github 和其他 google 搜索中看到的 spree 样式表覆盖示例显示许多人使用 app/assets/stylesheets 文件夹。

是否最好覆盖文件夹 my_store/app/assets/stylesheets 中的 spree 样式?还是 my_store/vendor/assets/stylesheets?

【问题讨论】:

  • 如果对您有帮助,请考虑将我的答案标记为正确
  • 你最后放哪儿了?

标签: css ruby-on-rails assets spree


【解决方案1】:

更新:

与我最初的回答中所述不同,Spree 不会甚至评估 app/assets/stylesheets 中的内容,并且需要在 vendor/assets/stylesheets 中进行样式自定义,例如在

vendor/assets/stylesheets/spree/frontend/all.css

TlmaK0 完全正确地指出了这一点。


引用http://guides.rubyonrails.org/asset_pipeline.html:

管道资产可以放在三个应用程序中的其中之一 位置:app/assets、lib/assets 或 vendor/assets。

  • app/assets 用于应用程序拥有的资产,例如自定义图像、JavaScript 文件或样式表。
  • lib/assets 用于您自己的库的代码,这些代码并不真正适合应用程序的范围或共享的那些库 跨应用程序。
  • vendor/assets 用于外部实体拥有的资产,例如 JavaScript 插件和 CSS 框架的代码。

简短:您可能希望将覆盖内容放入app/assets/stylesheets

【讨论】:

  • Spree 使用供应商/资产/样式表,应用程序/资产/样式表的更改被忽略
【解决方案2】:

将所有视图导出到应用程序/视图:

rails generate spree:frontend:copy_views

这将在 app/views 中生成所有前端视图以覆盖它。

编辑app/views/spree/shared/_head.html.erb 并添加:

<%= stylesheet_link_tag 'application', media: 'screen' %>

包括 app/assets/stylesheets 文件夹。

【讨论】:

    【解决方案3】:

    通常所有用于 spree 的字体和后端代码都会像其他 gem 一样加载到您的 rvm 中,您可以通过在应用程序中创建 decorators 文件夹来覆盖它们(与模型、控制器相同)。或者您可以将文件放在同一位置(但这不是正确的解决方案)并可以进行更改,如mainapp/app/views/spree/admin/shared/_header.html.erb

    对于装饰者来说,比如我想覆盖 spree 的 products_controller,我会把它放在 decorators/products_controller_decorator.rb

     Spree::ProductsController.class_eval do
       #mychanges
     end
    

    【讨论】:

      【解决方案4】:

      我将我的 css 放在“正常”的位置 - 在 app/assets/stylesheets 中,没有任何改变。我将我的 css 放在 vendor/assets/stylesheets 文件夹中,它们被应用了。

      使用 Spree 与使用“Rails”非常不同 - 尽管 spree 是在 rails 服务器上运行的。该过程从“文件在哪里?”开始。并从那里变得更加奇怪。这就是为什么我放弃它来定制解决方案的原因。在许多情况下,学习如何修改/自定义 Spree 比从头开始编写新解决方案(针对我们实际需要的部分)需要更长的时间。

      【讨论】:

        猜你喜欢
        • 2023-03-11
        • 2012-09-29
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        • 2014-06-19
        • 1970-01-01
        • 2015-02-04
        • 2015-08-23
        相关资源
        最近更新 更多