2015-09-18 62 views
1

我無法弄清楚如何使某些.scss文件在某些​​視圖下工作。我刪除了* = require_tree。從application.css.scss,但我不知道該從哪裏去。 stylesheet_link_tag似乎無法識別.scss文件。我可以使用什麼標籤將.scss文件導入到視圖中?Rails - 如何爲1視圖設置1個scss文件

我也試過爲不同的視圖創建不同的控制器,但是在我刪除了require_tree之後,控制器不使用自動生成的.scss文件。

+0

你是什麼意思'stylesheet_link_tag'無法識別'.scss'文件?你可以發佈一些代碼嗎?它應該工作,所以我認爲你的視圖代碼中存在一個問題。 – ptd

回答

1

你可能缺少的最重要的一條是,鏈輪將不會提供任何資產,主要是css和js需要在資產清單中聲明。引用文檔:

如果您有其他清單或個別樣式表和JavaScript文件包括,您可以將它們添加到配置/初始化/ assets.rb預編譯數組:

 Rails.application.config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js'] 

使用預期的結果名稱(擴展名爲.css),而不是源文件(擴展名爲.scss)。

+0

謝謝。閱讀時我對此感到困惑,並嘗試使用.scss擴展名添加它。我的css文件現在正在工作,但我有我的應用程序中的每個視圖應用css的原始問題。我只在一個視圖中使用stylesheet_link_tag。 –

1

有一種方法來組織基於控制器的資產。 導軌指南有一個section about it

根據它,你可以爲你的ProjectsController創建app/assets/stylesheets/projects.css.scss文件,包括像這樣:

<%= stylesheet_link_tag params[:controller] %> 

執行此操作時,請確保您使用的不是require_tree指令,因爲這將導致你的資產被包括不止一次。

基於

動作樣式表可以類似地創建的:

<%= stylesheet_link_tag "#{params[:controller]}/#{params[:action]}" %> 
+0

謝謝。我已經讀過這部分,但仍有點困惑。 –

2

除去application.css*= require_tree

在application.html附加:

<head> 
    <%= yield :stylesheets %> 
</head> 

而且每一頁上呈現:

<% content_for :stylesheets do %> 
<%= stylesheet_link_tag "your file" %> 
<% end %> 
+0

我得到了這個工作,但CSS仍然適用於我的應用程序中的每個視圖。我只將stylesheet_link_tag添加到一個視圖中。我確實刪除了application.css.scss中的require_tree標籤。謝謝您的幫助。 –

+0

將產量添加到application.html.erb導致問題。來自一個頁面的CSS也被包含在其他頁面中,這也是我想要避免的。這隻發生在我從一個頁面導航到另一個頁面的時候..也許這與樣式如何被緩存在系統中有關係?不知道..是我所要做的,雖然是stylesheet_link_tag添加到我想要不同的CSS上的頁面。 –

+0

css文件應該包含在head部分。 –

相關問題