覆盖狂欢资产

时间:2014-02-27 18:11:00

标签: css ruby-on-rails assets spree

我正在使用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?

4 个答案:

答案 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文件夹。