2011-09-18 8 views
18

Postępuję zgodnie z podręcznikiem Agile Web Development z Rails 4th edition i mam problem z css-a w szynach 3.1.Koła zębate :: CircularDependencyError w sklepie nr indeksu

kod CSS jest:

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

Gdybym zmodyfikować kod CSS app/assets/stylów/aplication.css.scss złapię następny błąd:

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' 

Nie rozumiem, dlaczego jeśli zmienię wartość marginesu lub wartość dopełnienia w pliku aplication.css.scss, na przykład pojawia się ten błąd.

Dziękuję bardzo.

+0

Czy odejdzie po ponownym uruchomieniu serwera? –

+0

Nie. Uruchomiłem ponownie serwer, ale problem nie został rozwiązany. Jeśli odrzuciłem css stronę działającą, ale bez css. Usunąłem z aplication.html.erb aplikację <% = stylesheet_link_tag "%. Następnie strona działa dobrze, ale bez css. Nie wiem, co mogę zrobić, aby rozwiązać ten problem :(Dziękuję bardzo. – hyperrjas

+0

Proszę wstawić powtarzalny przykład: –

Odpowiedz

52

Powinieneś usunąć app/assets/stylesheets/application.css.

+0

To naprawiło mój problem.Dziękuję –

+1

nazywane jest to szybką poprawką;) –

+0

Tak, 'require_tree .' oznacza" wymaga wszystkiego w tym katalogu i wszystkich dzieci "i jest w wygenerowanym pliku' application.css'. Dość dziwne, że Rails domyślnie mówi "włącz wszystkie CSS na wszystkie strony zawsze", co? – AlexChaffee

2

Wystąpił ten sam problem po zainstalowaniu SCSS. Usunąłem problem, usuwając komentarze defektów, które wiążą miejsca w nagłówku. Więc tak:

/* 
* 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; 
} 

Stał tak:

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

Te "domyślne komentarze" nazywane są "dyrektywami", a bez nich należy wyraźnie uwzględnić i wstępnie skompilować pliki CSS zasobów. Co może być dla ciebie dobre, ale nie jest standardowym Railsiem w dzisiejszych czasach. – AlexChaffee

+0

Prawidłowo. To było kilka lat temu miałem ten problem. Już nie jestem i wszystko działa zgodnie z oczekiwaniami. Jestem prawie pewien, że mój problem był czymś, co robiłem źle w tym czasie. – Ken

14

Miałem podobny problem:
Asset pipeline not precompiling sass

Okrągła zależność dzieje, gdy plik manifestu wymaga pliki drzew. Sass robi to mimo to, więc nie jest to konieczne.

Usuń:

*= require_tree . 
+3

Dlaczego do cholery nie jest to udokumentowane jako takie. Pochodzące z .NET jest to bardzo mylące. Muszę google dla prawie wszystkiego. :/ –

+0

Instalacja aktywów jest całkiem nowa i myląca dla wielu osób. To będzie łatwiejsze :) – Rimian

+0

Greate yar, Uratowałeś mi dużo czasu. –

0

Wystarczy nazwać application.css jako "application.scss". To rozwiąże twój problem.

Powiązane problemy