2010-10-15 28 views
12

Je viens de passer de ma base de données de développement à la base de données de production, et je me suis rendu compte que je recevais un nom d'erreur cohérent quelle vue j'essaie d'ouvrir. Les feuilles de style ne se chargent pas correctement, bien qu'elles soient à la bonne place.Rails Serveur de production: les feuilles de style ne s'affichent pas!

Voici quelques informations sur l'erreur:

Voir

<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) 

page Source

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

Lorsque je tente d'ouvrir le 'global' et feuille de style 'maison' s de la source de la page, ils ne sont pas ouverts. J'ai essayé d'ajouter 'public /' à l'URL mais cela ne correspond à aucune correspondance.

Lieu

Tous les non-http stylesheets sont root/public/stylesheets/

Routes

Les deux derniers itinéraires sont les 'fourre-tout', seulement là pour une caractéristique particulière sur le site. Ceux-ci semblent attraper mes feuilles de style (et probablement d'autres étiquettes aussi).

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

La page des routes les emmène dans une action de contrôleur catchall au fond de ma page Routes, que mon site utilise comme fonctionnalité pour la commodité de l'utilisateur (les utilisateurs peuvent créer des URL différentes pour que les autres puissent y accéder). Il n'y a pas de 404 ou 403 - à la place, je reçois juste une page non formatée laide! – sscirrus

+1

Donc le problème est dans 'routes.rb' ... Assurez-vous que'/stylesheets', '/ images','/javascripts' etc. ne sont pas interceptés par la route 'catch-all'. Publiez votre 'routes.rb' si vous voulez des suggestions pour résoudre ce problème. – Mischa

+0

J'ai ajouté le fichier de routes, Tokyo. Merci – sscirrus

Répondre

18

Ce thread a quelques suggestions ...

En fonction de votre serveur Web, vous devrez peut-être modifier le paramètre suivant dans config/environments/prodcution.rb de:

config.serve_static_assets = false 

Pour:

config.serve_static_assets = true 
+1

Les commentaires au-dessus de cette ligne indiquent > "Serveur d'actifs statiques de Disable Rails En production, Apache ou nginx le feront déjà" Donc devrais-je le mettre à false si j'utilise nginx en production? – StarCub