Ruby on rails 资产管道轨道3结构

Ruby on rails 资产管道轨道3结构,ruby-on-rails,ruby-on-rails-3,asset-pipeline,assets,Ruby On Rails,Ruby On Rails 3,Asset Pipeline,Assets,我在应用程序的“我的资产”文件夹中具有以下结构: - app - assets - application.scss - themes - mytheme - default.scss 在我的application.haml.html中,我会: = stylesheet_link_tag 'application' = stylesheet_link_tag "themes/mytheme/default" 现在,当我预编译我的资产时,appl

我在应用程序的“我的资产”文件夹中具有以下结构:

- app
  - assets
    - application.scss
    - themes
      - mytheme
        - default.scss
在我的application.haml.html中,我会:

= stylesheet_link_tag 'application'
= stylesheet_link_tag "themes/mytheme/default"
现在,当我预编译我的资产时,application.css在我的public/assets文件夹中,但是mytheme的default.css不在那里。这使我在登台环境中始终出现错误:

ActionView::Template::Error(主题/mytheme/default.css不可用 预编译)


我必须做些什么才能使编译器将我的所有资产都用于编译?

有几种方法可以避免异常:
首先是:
不要在布局或视图中使用
=stylesheet\u link\u标记“themes/myteme/default”
。只需在
application.css
文件中添加适当的说明(我的意思是
require
语句)。
第二:
您可以在
application.rb
文件中打开“实时资产编译”

第三:
您可以添加“themes/mytheme/default”来编译链轮的路径。
下面是要阅读的其他资源:

尝试将配置文件修改为以下内容:

config.assets.precompile+=['default.css']


然后运行rake任务进行预编译。您可能需要包括资产的完整路径。您可以找到有关和的特定信息。

您还可以为每个主题使用不同的布局。虽然它不是很枯燥,但有时复制一些代码以解耦应用程序模块以减少负面更改的影响是很好的。类似于这个问题的东西

我将利用并将您的
应用程序/资产
组织到解耦的模块中。以下结构属于我目前正在进行的一个项目。 假设你的应用程序由三个模块组成:公共端、管理用户界面和CRM,让你的代理跟踪你公司的销售流程:

app/assets/
├── coffeescripts
│   ├── admin
│   │   ├── components
│   │   ├── index.coffee
│   │   └── initializers
│   ├── application
│   │   ├── components
│   │   ├── index.sass
│   │   └── initializers
│   └── crm
│       ├── components
│       ├── index.sass
│       └── initializers
├── images
│   ├── admin
│   ├── application
│   └── crm
└── stylesheets
    ├── admin
    │   ├── components
    │   └── index.sass
    ├── application
    │   ├── components
    │   └── index.sass
    └── crm
        ├── components
        └── index.sass

21 directories, 6 files
每个主题可以有一个模块,并且可能
core\u-theme
包含通用样式表、图像以及最终的JS组件

无论您选择单共享布局还是不选择单共享布局,您都可以只添加以下行,这将引导您获得更有序的代码库和正确的预编译生产资产

= stylesheet_link_tag 'theme_a'
= javascript_include_tag 'theme_a'
别忘了更新你的
应用程序.rb
,这样它们就会被正确地预编译:

  config.assets.precompile = %w(admin.js application.js crm.js 
                                admin.css application.css crm.css)

谢谢不知道他只是在检查application.js和application.css