2011-09-18 75 views
18

我跟隨手動敏捷Web開發與Rails第4版,我有一個鏈接在軌道3.1中的鏈接問題。Sprockets :: CircularDependencyError存儲#索引

代碼CSS是:

http://media.pragprog.com/titles/rails4/code/rails31/depot_e/app/assets/stylesheets/application.css.scss

如果我修改應用程序/資產/樣式表/ aplication.css.scss的CSS代碼我趕上了一個錯誤:

Sprockets::CircularDependencyError in Store#index 

Showing /home/ubuntu/Desktop/Depot/app/views/layouts/application.html.erb where line #5 raised: 

/home/ubuntu/Desktop/Depot/app/assets/stylesheets/application.css.scss has already been required 
Extracted source (around line #5): 

2: <html> 
3: <head> 
4: <title>Pragprog Books Online Store</title> 
5: <%= stylesheet_link_tag "application" %> 
6: <%= javascript_include_tag "application" %> 
7: <%= csrf_meta_tag %> 
8: </head> 
Rails.root: /home/ubuntu/Desktop/Depot 

Application Trace | Framework Trace | Full Trace 
app/views/layouts/application.html.erb:5:in`_app_views_layouts_application_html_erb___1008723970_81658620' 

我不明白爲什麼如果我修改aplication.css.scss中的邊距值或填充值,例如我得到這個錯誤。

非常感謝。

+0

當您重新啓動服務器時它會消失嗎? –

+0

不是。我已重新啓動服務器,但問題未解決。如果我停止了CSS的頁面工作,但沒有CSS。我從aplication.html.erb中移除了<%= stylesheet_link_tag「應用程序」%>。然後頁面工作正常,但沒有CSS。我不知道我可以解決這個問題:(。非常感謝你。 – hyperrjas

+0

請重新設置一個可重複的例子。 –

回答

52

您應該刪除app/assets/stylesheets/application.css。

+0

這解決了我的問題。謝謝。 –

+1

這就是所謂的快速修復;) –

+0

是的,'require_tree .'的意思是「需要這個目錄和所有子項中的所有東西」,並在生成的'application.css'中。很奇怪,默認情況下,Rails說「總是包含所有頁面中的所有CSS」,是吧? – AlexChaffee

2

我在安裝SCSS後遇到了同樣的問題。我通過刪除標題欄中放置的摺痕評論來解決問題。所以這個:

/* 
* This is a manifest file that'll be compiled into application.css, which will include all the files 
* listed below. 
* 
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. 
* 
* You're free to add application-wide styles to this file and they'll appear at the top of the 
* compiled file, but it's generally better to create a new file per style scope. 
* 
*= require_self 
*= require_tree . 
*/ 

#wrapper { 
    width: 980px; 
    margin: 0 auto; 
} 

成爲本:

#wrapper { 
    width: 980px; 
    margin: 0 auto; 
} 
+1

這些「默認註釋」被稱爲「指令」,沒有它們,您將不得不明確包含和預編譯您的資產CSS文件。這對你來說可能是好的,但現在不是標準的Rails。 – AlexChaffee

+0

正確。這是幾年前我遇到這個問題。我不再是一切都按預期工作了。我很確定我的問題是我當時做錯了。 – Ken

14

我有一個類似的問題:
Asset pipeline not precompiling sass

當清單文件要求樹中的文件的循環依賴發生。無論如何,Sass會這樣做,所以沒有必要。

刪除:

*= require_tree . 
+3

爲什麼地獄不是這樣記錄的。來自.NET這很混亂。我幾乎所有的東西都是谷歌。 :/ –

+0

資產管道很新鮮,讓很多人感到困惑。它會變得更容易:) – Rimian

+0

Greate yar,你節省了我很多時間。 –

0

僅舉的application.css爲 「application.scss」。這將解決您的問題。