2010-10-15 9 views
12

Właśnie przełączyłem się z mojej bazy danych do bazy produkcyjnej i zdałem sobie sprawę, że otrzymuję spójny komunikat o błędzie, jaki widok próbuję otworzyć. Arkusze stylów nie ładują się poprawnie, mimo że znajdują się we właściwym miejscu.Serwer produkcji szyn: arkusze stylów nie są wyświetlane!

Oto kilka informacji na temat błędu:

View

<head> 
<%= stylesheet_link_tag "global", "home", "http://static.flowplayer.org/tools/css/scrollable-navig.css" %> 
</head> 

konsoli

Started GET "/stylesheets/global.css?1287048448" for 127.0.0.1 at 2010-10-15 00:18:43 -0400 
Processing by WelcomeController#long_switchboard as CSS 
Parameters: {"1287048448"=>nil, "path"=>"stylesheets", "link"=>"global"} 
Completed in 2ms 

NoMethodError (undefined method `id' for nil:NilClass): 
    app/controllers/welcome_controller.rb:76:in `long_switchboard' 
Rendered C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms) 
Rendered C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (7.0ms) 
Rendered C:/Sanj/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack3.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (108.0ms) 

Źródło strony

<link href="/stylesheets/global.css?1287048448" media="screen" rel="stylesheet" type="text/css" /> 
<link href="/stylesheets/home.css?1287086704" media="screen" rel="stylesheet" type="text/css" /> 
<link href="http://static.flowplayer.org/tools/css/scrollable-navig.css" media="screen" rel="stylesheet" type="text/css" />  

Kiedy próbuję otworzyć 'globalny' i Arkusz stylów "home" s ze źródła strony, nie są otwarte. Próbowałem dodać "public /" do adresu URL, ale nie było żadnych pasujących tras.

Lokalizacja

All non-http arkusze stylów są korzeniowych/public/stylów/

Trasy

Ostatnie dwa szlaki są 'catch-alls', tylko na konkretnej funkcji na Strona. Wygląda na to, że łapią moje arkusze stylów (i prawdopodobnie także inne znaczniki).

match ':path/:link' => 'welcome#long_switchboard' 
match ':path' => 'welcome#short_switchboard' 
+0

Strona tras przenosi ich do akcji kontrolera catch na dole strony moich tras, którą moja witryna wykorzystuje jako funkcję dla wygody użytkownika (użytkownicy mogą tworzyć różne adresy URL, aby inni mogli uzyskać do nich dostęp). Nie ma 404 ani 403 - zamiast tego dostaję brzydką niesformatowaną stronę! – sscirrus

+1

Problem tkwi w 'routes.rb' ... Upewnij się, że'/stylesheets', '/ images','/javascripts' itp. Nie są przechwytywane przez trasę "catch-all". Opublikuj swoje 'routes.rb', jeśli chcesz podpowiedzieć, jak to naprawić. – Mischa

+0

Dodałem plik tras, Tokio. Dzięki – sscirrus

Odpowiedz

18

Ten thread ma jakieś sugestie ...

zależności serwer może trzeba zmienić następujące ustawienie w config/environments/prodcution.rb od:

config.serve_static_assets = false 

Do:

config.serve_static_assets = true 
+1

Komentarze powyżej tego wiersza mówią: > "Wyłącz serwer zasobów statycznych Railsów. W produkcji Apache lub nginx już to zrobi" Czy powinienem więc zmienić go na false, jeśli używam nginx w produkcji? – StarCub