comment utiliser content_for de sorte que le contenu s'affiche dans la mise en page
Suis en train de tester la content_for dans mon rails 3.2 application et en suivant les rails guides, mais ils sont spécifiques pour les fichiers réels et je n'arrive pas à obtenir le rendement au travail:
application.html.erb fichier:
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<%= yield :navigation %> #shouldn't this load the content_for block named :navigation specified in the _main_nav.html.erb partial?
<%= yield %> #this load the index page content
</body>
</html>
J'ai créé un fichier de mise en page _main_nav.html.erb (je sais que je peux rendre avec <%= render 'layouts/en-tête' %> mais je suis en train d'utiliser le content_for à la place) Le _main_nav.html.erb est:
<% content_for :navigation do %>
<ul>
<li>Home</li>
</ul>
<% end %>
La façon que j'ai lu le RailsGuide http://guides.rubyonrails.org/layouts_and_rendering.html#using-the-content-for-method
cela devrait fonctionner. Mais il ne le fait pas. Je ne reçois pas une erreur. Semble simple, mais je suis perplexe.
Quand je vais à mon index.html.erb fichier je m'attends à voir ce résultat:
- Maison
OriginalL'auteur akkdio | 2013-07-19
Vous devez vous connecter pour publier un commentaire.
OK, je pense avoir une solution pour ce. Votre code:
devrait être en haut du fichier qui est chargement. Votre _header.html.erb est partielle. Si vous déplacez ce code dans les vues/tâches/nouveau.html.erb alors qu'il fonctionne comme prévu.
Cependant, pour qu'il fonctionne comme vous le voulez, alors vous avez besoin d'ajuster votre application.html.erb fichier:
Avis, ce que j'ai appelé le rendu erb balise sans le signe=. Cela signifie que je ne vois pas le contenu de l'en-tête partielle, mais il ne charge. Si vous incluez le signe = puis, il fonctionne encore, mais rend également tout autre contenu que vous avez dans la partielle.
Remarque: Le rendu de la balise doit être au-dessus de/avant que le rendement de la balise.
pas de soucis @akkdio, j'ai aussi fait une demande d'extraction de votre dépôt GitHub. Des questions il suffit de demander. Je suis un newbie, mais je crois que je comprends ce qui se passe avec celui-ci!
OriginalL'auteur gilesdotcodes
Je crois ou ce que vous voulez est d'avoir un point de vue qui contiendra votre
content_for
bloc. Donc, un exemple serait si vous avez le suivant:index.html.erb
Puis à la sortie qu'à l'intérieur du
users
feuille de style, nous pouvons le rendement et la passer dans le symbole, le nom de lacontent_for
.Application.html.erb
Donc d'examiner ce qui se passe ici est que, dans mon exemple je suis en train de dire que j'ai un
users
feuille de style que je voudrais charger dans le<head></head>
de ma demande.html.erb. Pour ce faire, j'ai mis lecontent_for
qui est un des Rails d'aide et de lui donner l'identifiant sysmbol qui esthead
qui est alors appelé à laapplication.html.erb
où je neyeild :head
. Donc, ce que je reçois ma demande de faire, c'est quand monindex.html.erb
pour que la page est en cours de rendu de laapplication.html.erb
charge monusers
de la feuille de style. Espérons que cela efface les choses pour vous.Mise à jour explication
Pour ajouter à cela, une autre chose que l'effet de la combinaison de l'utilisation de
content_for
avecyield
est de vous permettre d'injecter des données dans l'application de mise en page à partir de TOUT vue. Donc comme autre exemple. Vous pourriez avoir le suivant:Ici lorsque le contrôleur rend le modèle de vue et il se combine avec la présentation de l'application, le texte
My title
sera remplacé. Leyield(:head)
le rend facile d'ajouter des éléments à la page spécifique si nécessaire. Jetez un oeil à l'exemple suivant:app/views/layouts/de l'application.html.erb
app/views/bla/index.html.erb
Et une autre remarque pas sûr de savoir comment votre développement de votre application ou de ce cadre de conception de votre aide, mais vous pouvez aussi prendre un coup d'oeil à Rails-Bootstrap-Navbar. Peut aussi être une alternative.
voir mise à jour de réponse.
David, j'apprécie vraiment que vous preniez le temps de comprendre ma question et je suis désolé c'est un peu déroutant... je vois ce que vous avez fait et de la comprendre comme elle se rapporte à la feuille de style. Là où je suis clair, c'est pourquoi quand j'essaie de créer une nav pour utiliser le content_for rien ne s'affiche? S'il vous plaît si vous pouvez regarder mon retravaillé exemple et laissez-moi savoir si vous voyez quelque chose de mal dans ma réflexion.
prendre un autre regard sur la poursuite de la mise à jour exemple avec un lien supplémentaire
David, Merci encore. J'ai essayé votre exemple dans mon application et il ne fonctionne pas. C'est quelque chose de simple, j'en suis sûr. Mais quoi? Pour les aider, j'ai mis mon exemple sur Github ( github.com/akkdio/content_for ) avec l'espoir qu'un rapide coup d'œil repérer mon erreur et de la pensée. Le bootstrap lien est intéressant... cependant, je tente de comprendre de pièces et de morceaux en premier. Je vous remercie encore.
OriginalL'auteur David