我正在使用spree 2.1.5,rails 4.0.2,sass-rails 4.0.0。
http://guides.spreecommerce.com/developer/asset.html处的狂欢文档表示使用vendor / assets / stylesheets文件夹。但是,我在Github和其他谷歌搜索中看到狂热样式表覆盖的示例显示许多人使用app / assets / stylesheets文件夹。
最好在文件夹my_store / app / assets / stylesheets中覆盖狂欢样式吗?或my_store / vendor / assets / stylesheets?
答案 0 :(得分:5)
我把我的CSS放在“正常”的地方 - 在app / assets / stylesheets中,没有任何改变。我将我的css放在vendor / assets / stylesheets文件夹中,然后应用它们。
使用Spree非常不喜欢使用“Rails” - 虽然spree正在rails服务器上运行。该过程以“文件在哪里?”开头。并从那里变得更奇怪。这就是我放弃它以获得自定义解决方案的原因。在许多情况下,学习如何修改/自定义Spree需要更长的时间,而不是从头开始编写新的解决方案(对于我们实际需要的部分)。
答案 1 :(得分:2)
与我原来的回答中提到的不同,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
。
答案 2 :(得分:0)
通常,狂欢的font-end和back-end的所有代码都会像其他gem一样加载到你的rvm中,你可以通过在app中创建decorators
文件夹来覆盖它们(与模型,控制器相同)。或者您可以将文件放在同一位置(但这不是正确的解决方案)并且可以进行更改,如mainapp/app/views/spree/admin/shared/_header.html.erb
对于装饰者示例说我想覆盖spree' s products_controller
我会将其放在decorators/products_controller_decorator.rb
Spree::ProductsController.class_eval do
#mychanges
end
答案 3 :(得分:0)
通过以下方式将所有视图导出到应用程序/视图:
rails generate spree:frontend:copy_views
这将在app / views中生成所有前端视图以覆盖它。
编辑app/views/spree/shared/_head.html.erb
并添加:
<%= stylesheet_link_tag 'application', media: 'screen' %>
包括app / assets / stylesheets文件夹。