Je l'ai lu dans les guides Rails, j'ai lu le livre de Micheal Hartel et je le lis maintenant dans Rails Voir le livre mais je suis toujours confus :(
Il y a un _footer.html.erb
fichier donc c'est un "partiel" et dans le code il a écrit:
<%=render 'layouts/footer' %>
donc ma compréhension est que quand il voit cela, va insérer le fichier HTML pour le pied de page ici. Ok ... Maintenant, quelques pages plus tard, il est dit:
<%= render partial: 'activitiy_items/recent' %>
alors POURQUOI cette fois nous avons le mot "partiel" ici mais nous ne l'avions pas dans le précédent?
Et là ailleurs je vois <%= yield :sidebar %>
Donc, ce yield
insère également du HTML à sa place? Eh bien, n'est-ce pas ce que render
faisait?
J'espérais qu'un autre programmeur au lieu de livres m'explique cela peut-être que je comprends cette fois :)
render
& render partial:
render 'some_view'
est un raccourci pour render partial: 'some_view'
.render file: 'view'
recherchera un fichier view.html.erb
et pas _view.html.erb
(.erb
ou tout autre moteur de rendu que vous utilisez)render
n'acceptera pas de variables locales supplémentaires pour le partiel, vous devez utiliser render partial:
comme suit pour cela:
render partial: 'some/path/to/my/partial', locals: { custom_var: 'Hello' }
( http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables )
yield
& content_for
yield
est généralement utilisé dans les dispositions . Il indique Rails pour mettre le contenu de ce bloc à ça place dans la mise en page.yield :something
associé à content_for :something
, vous pouvez passer un bloc de code (affichage) pour afficher où le yield :something
est placé (voir l'exemple ci-dessous).Un petit exemple sur le rendement:
Dans votre mise en page:
<html>
<head>
<%= yield :html_head %>
</head>
<body>
<div id="sidebar">
<%= yield :sidebar %>
</div>
</body>
Dans l'un de vos points de vue:
<% content_for :sidebar do %>
This content will show up in the sidebar section
<% end %>
<% content_for :html_head do %>
<script type="text/javascript">
console.log("Hello World!");
</script>
<% end %>
Cela produira le code HTML suivant:
<html>
<head>
<script type="text/javascript">
console.log("Hello World!");
</script>
</head>
<body>
<div id="sidebar">
This content will show up in the sidebar section
</div>
</body>
Messages qui pourraient aider :
Liens vers la documentation et les guides :
render: template et render: partial sont deux fichiers dans Rails ..
render: les modèles sont principalement créés selon une action avec la syntaxe demo.html.erb
render: partial sont réutilisables et appelés à partir de différentes vues, sont partagés entre de nombreuses pages dans l'application et la syntaxe est _demo.html.erb
rendement et rendu ..
Le rendement est un moyen d'appeler un bloc de code avec sa sortie mais le rendu inclura un modèle de page partiel où il est appelé. Dans Rails yield est principalement utilisé dans la mise en page tandis que le rendu est utilisé dans les actions ou leurs modèles