# [Rails4][front-end]在不修改前端資源(.css,.js,圖片等)排列位置的情形下引用前端Assets檔
###### tags: `Rails4`,`front-end`
Ruby : 2.2.6
Rails: 4.2.8
假設現在做一個專案,想要套用網路現成的模板如[adminLTE](https://adminlte.io/)等,
通常這類模板會使用許多的前端套件,而這些套件都是將css跟js混合放在一個資料夾內,
此時要根據rails預設的方式將css跟js取出後各自分開放在assets/stylesheets跟assets/javascripts資料夾中是很不切實際的作法,
這時直接將前端資源檔原封不動放在vendor資料夾(或其他放前端資源用的資料夾也可)內,
再藉由修改config/initializers/assets.rb來引用這些資源.
假設我們把前端檔案放在vendor/admin-lte內,
現在想要引用vendor/admin-lte/plugins/fontawesome-free/css/all.min.css
跟dist/css/adminlte.min.css,
作法如下:
config/initializers/assets.rb
```ruby
#...
#此段語法是將陣列內的路徑加入編譯路徑中
[
"vendor/assets/",
"vendor/admin-lte/"
].each{|x|
Rails.application.config.assets.paths << x
}
#此段語法是設定要進行編譯的檔案
Rails.application.config.assets.precompile += [
#編譯特定檔案的寫法
"plugins/fontawesome-free/css/all.min.css",
"dist/css/adminlte.min.css",
#也可改成以下寫法一次引用多個檔案
# css
"plugins/*.css",
"dist/*.css",
# js
"plugins/*.js",
"dist/*.js",
#img
"dist/img/*.jpg",
"dist/img/*.png",
]
```
在view中引用資源
```htmlmixed=
...
<!--css-->
<%= stylesheet_link_tag 'plugins/fontawesome-free/css/all.min.css', :media => "all" %>
<%= stylesheet_link_tag 'dist/css/adminlte.min.css' ,:media => "all" %>
...
<!--js-->
<%= javascript_include_tag "plugins/jquery/jquery.min.js" %>
...
<!--image-->
<!--<img src="dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image">-->
<%= image_tag("dist/img/user2-160x160.jpg",class: "img-circle elevation-2" ,alt: "User Image") %>
...
```
>副檔名不須省略