2010-10-15 6 views
12

Ich bin gerade von meiner Entwicklungsdatenbank in die Produktionsdatenbank gewechselt, und mir wurde klar, dass ich einen konsistenten Fehler bekomme, egal welche Ansicht ich öffnen möchte. Die Stylesheets werden nicht richtig geladen, obwohl sie an der richtigen Stelle sind.Rails Production Server: Stylesheets werden nicht angezeigt!

Hier einige Informationen über den Fehler:

Ansicht

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

Console

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) 

Seite Quelle

<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" />  

Wenn ich versuche, die 'global' zu öffnen und "home" Stylesheet s aus der Seitenquelle, sie sind nicht geöffnet. Ich habe versucht, der URL "public /" hinzuzufügen, aber es besagt, dass keine Route übereinstimmt.

Ort

Alle nicht-http Sheets ist in root/public/stylesheets/

Routen

Die letzten beiden Strecken sind das 'catch all' gibt es nur für ein bestimmtes Merkmal auf der Standort. Diese scheinen meine Stylesheets (und möglicherweise auch andere Tags) zu erfassen.

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

Die Routes-Seite führt sie unten in eine Catchall-Controller-Aktion auf meiner Routerseite, die meine Site als Funktion für Benutzerfreundlichkeit verwendet (Benutzer können verschiedene URLs für andere Benutzer erstellen). Es gibt keine 404 oder 403 - stattdessen bekomme ich nur eine hässliche unformatierte Seite! – sscirrus

+1

Das Problem liegt also in 'routes.rb' ... Stellen Sie sicher, dass'/stylesheets', '/ images','/javascripts' usw. nicht von der "catch-all" Route abgefangen werden. Poste deine 'routes.rb' wenn du Vorschläge haben möchtest, wie das zu beheben ist. – Mischa

+0

Ich habe die routes-Datei Tokyo hinzugefügt. Danke – sscirrus

Antwort

18

Diese thread hat einige Vorschläge ...

auf Ihrem Webserver Je können Sie die folgende Einstellung in config/environments/prodcution.rb von ändern müssen:

config.serve_static_assets = false 

An:

config.serve_static_assets = true 
+1

Die Kommentare über dieser Zeile sagt > "Deaktivieren Sie Rails statische Asset-Server. In der Produktion wird Apache oder Nginx dies bereits tun" Also sollte ich es falsch, wenn ich Nginx in der Produktion verwenden? – StarCub