2014-07-15 33 views
0

所以我有點迷路了。我所有的CSS/SCSS文件都在我的應用程序的任何地方加載。但我有兩種不同的設計(正面和背面),我想分開。我怎樣才能做到這一點?
加上它是沒用的,所有js/css被加載,即使他們沒有被使用。我如何控制它?Rails - 在所有頁面上加載的資產

+0

[Using Rails 3.1,你把你的「頁面特定的」JavaScript代碼?]的可能重複(http://stackoverflow.com/questions/6167805/using-rails-3-1-where-do-you- put-your-page-specific-javascript-code) – juanitogan

回答

1

你是什麼想要做的是控制你的佈局。

由於你的問題目前太寬泛,有人給你一個體面的具體答案,就像說'告訴我關於天體物理學,我不明白如何發射火箭'。

我會建議先與導軌相關的佈局開始,然後再回來一個更具體的問題,一旦你有一個更好的理解。

http://guides.rubyonrails.org/layouts_and_rendering.html

還有上RailsCasts這將有助於您瞭解和控制資產管道有很大11分鐘視頻:http://railscasts.com/episodes/279-understanding-the-asset-pipeline

如果你正朝着說是您的應用程序是有關管理項目。

  1. 複製一個名爲say project-manifest.css的application.css文件,並使用與application.css相同的結構來加載所需的樣式表。

  2. 請訪問量/佈局/ application.html.erb說項目-layout.html.erb

  3. 在新projecs佈局文件,更新參考CSS指向項目的副本-manifest.css

  4. 點控制器代碼使用新的佈局

說你有:

# app/controllers/ProjectsController.rb 

def show 
    # code here 
    # rails does a default render layout: 'application', its overwritten by adding an explict render 
    render layout: 'project-layout' 
end 
+0

好吧,具體來說:我有一個css文件,它重載了一些我只想在我的應用程序的前面部分使用的類。我應該在哪裏放置文件,以便它不在整個應用程序中使用,而只在前部使用? – Simon

+0

我給你的指示將幫助你做到這一點,觀看資產管道視頻並快速閱讀佈局指南,然後我的指示應該是合理的。 – Evolve

+0

您在rails中創建的每個頁面當前包含文件/app/layouts/application.css,您需要創建一個指向它自己的CSS的新佈局文件,然後指向您想要的頁面。 – Evolve

1

在您的application.jsapplication.css默認有一個指令:require_tree。它會加載所有的js和css文件,以便稍後進行預編譯。這樣做是爲了讓客戶端只下載一次資產數據包(因爲它將被瀏覽器緩存)並使應用程序更快。

如果要加載特定的JavaScript或CSS文件爲每個控制器,取出require_tree指令,包括他們在各自的控制器:

<%= javascript_include_tag params[:controller] %> or <%= stylesheet_link_tag params[:controller] %> 

檢查了這一點:http://guides.rubyonrails.org/asset_pipeline.html#controller-specific-assets

相關問題