2009-04-07 7 views
3

Je suis coincé avec un bug en ce moment qui me laisse perplexe. J'ai une mise en page contenant du HTML et un partiel (pour la navigation) - là n'y a rien d'autre que le rendement.Rails Résultat de rendu partiel dans une page blanche?

  1. Si la navigation est incluse comme partie je ne reçois rien retourné au navigateur du tout (page blanche) mais tout autre semble normale
  2. Si je supprime la travaille partielle de la belle page
  3. Si je mettre le code de nav directement dans le modèle, il fonctionne bien
  4. si je remplace le code nav dans le partiel avec une chaîne simple, je reçois à nouveau une page vierge.

Quelqu'un at-il des idées sur ce que le problème pourrait être, ou savoir comment Je pourrais le déboguer?

Répondre

1

Vous avez trouvé le problème, le partiel était dans le dossier layouts, au lieu du dossier de vues de contrôleur pertinent . Cependant, Rails lançait une exception ActionView :: MissingTemplate qui n'était visible que via le débogueur, ce qui est probablement un bogue.

+1

Courez-vous en mode production? Les erreurs de trace de pile ne s'affichent pas dans la vue sauf si vous êtes en mode de développement. –

0

Tout d'abord, vérifiez le fichier journal pour voir si vous recevez un message d'erreur quelque part. Si cela ne vous aide pas, procédez comme suit:

  • Faites une copie de votre modèle & partielle, lié comme l'original
  • test qu'ils présentent le problème
  • Démarrer les choses de leur retirer jusqu'à ce que vous avez la cas le plus simple possible qui présente toujours le problème (votre chaîne dans le test partiel est un pas dans cette direction)
  • Si vous ne comprenez pas dans ce processus, revenez et éditez votre question pour inclure le code pour le simplifié case
0

J'ai eu cette erreur à plusieurs reprises. Le problème a toujours été résolu en changeant quelque chose dans le modèle fautif ou l'un de ses partiels (dans mon dernier cas, j'ai ajouté une ligne vide dans la source entre un </div> et un <div>, qui était dans une partie invoquée par le modèle; le modèle lui-même n'a eu aucun effet). La chose vraiment étrange est que le problème se produit rarement quand je change réellement un modèle, mais habituellement quand je change quelque chose lié (par exemple éditez une image montrée dans la page ou la CSS concernant la page). Alors que le problème est souvent lié à un partiel, la page entière est vide, et pas seulement la partie fournie par le partiel. Par ailleurs, le redémarrage du serveur Web (dans ce cas, Unicorn) ne résout pas le problème. Running Ruby 1.9.3, Rails 3.1.3. En utilisant SASS et Unicorn. UPDATE: Je viens de déterminer que Rails renvoie un 304 non modifié, basé sur l'en-tête "If-none-match" envoyé par mon navigateur (lui-même basé sur l'ETAG de la page précédente). Cependant, en attendant, le navigateur a effacé la fenêtre. Donc, vraisemblablement, quelque chose dans ce que Rails a envoyé a causé le navigateur pour effacer la fenêtre.

Questions connexes