2016-01-11 56 views
3

我剛剛開始使用軌道和加載外部資源,如cssjs一直是我的問題。在很少的地方閱讀,我發現,css應該放在app/assets/stylesheetsjs裏面app/assets/javascripts。這樣做之後,我打電話給我的cssjs在我看來,文件中像在哪裏把外部的CSS和JS在軌道上

<%= stylesheet_link_tag "<<path to my css>>" %> 

對CSS和

<%= javascript_include_tag "<<path to my js>>" %> 

,我包括在我的config/initializers/assets.rb

Rails.application.config.assets.precompile += [/.*\.js/,/.*\.css/] 

這條線,但這樣做給了我有些編譯錯誤。但我不確定是否正確的方式或不加載外部資源。我需要更改的另一個地方是爲了加載cssjs以及在性能方面包含rails的外部資源的最佳做法。

回答

2

資產管道

你指的是什麼到一定程度ING稱asset pipeline - 的app/assets文件夾是存儲所有的「依賴」文件爲你的HTML - css/js/images

資產管道是非常簡單 -

資產管道提供了一個連接和縮小或壓縮JavaScript和CSS資源的框架。它還增加了使用其他語言和預處理器(如CoffeeScript,Sass和ERB)編寫這些資產的功能。

它的功能是爲您提供一種將CSS/JS「編譯」爲精簡(minified)文件的方法,您可以在前端HTML中調用該文件。最終目標是讓您的「資產」儘可能小,因此您的網頁加載速度最快。

-

在你的情況,你要查找Sprockets Manifest Directives -

#app/assets/stylesheets/application.css 
/* 
    *= require self 
    *= require_tree . 
*/ 

以上將在app/assets/stylesheets每一個CSS文件,並串聯成一個單一的文件application.css

#app/views/layouts/application.html.erb 
<%= stylesheet_link_tag :application %> 

因此,要回答你的疑問句您只需將外部樣式表存儲在app/assets/stylesheets文件夾中即可。

如果你有一個「真正的」外部的樣式表(由谷歌或東西主持),你會希望把它列入你的layout如下:

#app/views/layouts/application.html.erb 
<%= stylesheet_link_tag :application, "http://cdn.google.com/stylesheet.css" %> 
2

一旦你添加你的css和js在assests各自的文件夾,你必須要求這些文件在application.js和application.css中,然後你可以在你的html中包含這兩個文件。試試下面的代碼:

application.css

//= require abc 

的application.js

//= require xyz 

在你的HTML:

<%= stylesheet_link_tag "application" %> 
<%= javascript_include_tag "application" %>