web-dev-qa-db-fra.com

Différence entre le rendu et le rendu partiel et le rendement

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

48
user1899082

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.
  • Lorsque vous faites 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 :

101
MrYoshiji

A propos du rendu, du rendu: partiel et du rendement

  • 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

3
Saumya Mehta