2011-11-23 110 views
0

我已經在我的資產應用程序的文件夾結構如下:在我application.haml.html資產管道導軌3結構

- app 
    - assets 
    - application.scss 
    - themes 
     - mytheme 
     - default.scss 

而且我做的:

= stylesheet_link_tag 'application' 
= stylesheet_link_tag "themes/mytheme/default" 

現在,當我預編譯我的資產,application.css位於我的public/assets文件夾中,但mytheme的default.css不存在。這讓我總是在臨時環境的錯誤:

::的ActionView ::模板錯誤(主題/ mytheme的/ default.css不 預編譯)

什麼我不得不這樣做編譯器正在將我所有的資產編譯?

回答

1

嘗試修改您的配置文件中是這樣的:

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

,然後運行耙預編譯任務。您可能需要包含資產的完整路徑。您可以找到有關asset pipeline hereinformation about compiling assets here的具體信息。

+0

謝謝。不知道他只是在檢查application.js和application.css – SteenhouwerD

0

有幾種方法來避免異常:
首先是:
不要在佈局或視圖使用= stylesheet_link_tag "themes/mytheme/default"。只需在application.css文件中添加適當的說明(我的意思是require語句)。
第二個:
您可以打開application.rb文件中的'live asset compilation'。

第三:
您可以添加「themes/mytheme/default」編譯鏈輪路徑。 下面是更多的資源爲:Asset pipeline

1

您也可以爲每個主題設置不同的佈局。雖然它不是非常乾燥,但爲了減少負面變化的影響,應用程序模塊可以分離一些代碼。類似於Fragile base class問題的東西。

我會利用index manifest並將您的app/assets組織成分離模塊。以下結構屬於我目前正在開發的一個項目。 比方說,你的應用程序組成了三個模塊組成:公共端,管理員UI和,例如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_theme包含常見的樣式表,圖像和最終的JS組件。

要麼你選擇一個單一的共享佈局,你可以添加下面的代碼將會引導你進入更有序的代碼庫和正確的預編譯生產資源。

= stylesheet_link_tag 'theme_a' 
= javascript_include_tag 'theme_a' 

不要忘記更新您的application.rb所以他們將被正確預編譯:

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