[RUBY] [Rails] Apprenez le rendement pour comprendre content_for

Diviser la mise en page commune et la mise en page individuelle par rendement

Dans Rails, la ** disposition commune ** est essentiellement appliquée à ʻapplication.html.erb, et la ** partie variable ** est gérée dans la balise body par ʻaction.html.erb.

Ici, yield est utilisé pour diviser et gérer. Voyons un exemple! !!

app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>Sample</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

Il faut noter le «rendement». Le fichier fractionné est stocké ici. Voici comment utiliser le rendement. Maintenant, réfléchissons-y en insérant content_for d'ici! Cette fois, considérons un programme qui change le titre.

Comment utiliser content_for et yield

content_for est utilisé lors de l'affichage de la ** mise en page individuelle à la mise en page commune. ** Prenons un exemple.

application.html.erb

<title><%= yield :title %></title>

En faisant cela, vous pouvez modifier la partie titre de manière variable. Il est souvent utilisé lorsque la mise en page change plusieurs fois dans une seule application.

app/views/hello/index.html.erb
<% content_for :title do %>
    hello#titre de l'index
<% end %>

<h1>hello#index</h1>
<p>Find me in app/views/hello/index.html.erb</p>

Remarquez ici de content_for: title do à ʻend. Cette partie réagira avec yield: title` et entrera. En fait, l'image est la suivante.

<title>hello#titre de l'index</title>

En passant, vous pouvez également définir la valeur par défaut comme suit.

<title><%= content_for?(:title) ? yield(:title) : "Sample"%></title>

Si content_for? A content_for,` yield (: title) ʻest chargé, sinon le titre sera "Sample". (C'est un opérateur ternaire.)

Comment est-il réellement utilisé?

<!DOCTYPE html>
<html>
  <head>
    <title>Sample</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <header>Conception d'en-tête</header>
      <div class="notice">
        <%= content_for?(:notice) ? yield(:notice) %>
      </div>
      <%= yield %>
  </body>
</html>

Faites attention au bas de l'en-tête. notice (Imaginez une notification ici.) J'écris un programme qui affiche yield (: notice) quand il y a une notification.

Si vous souhaitez afficher "Avis" dans toutes les mises en page, mais que vous souhaitez modifier le contenu, vous pouvez le faire comme suit.

<%= yield(:notice) %>

Avec un fichier fractionné (variable)

<%= content_for :notice do%>
  <p>Mise en garde!</p>
<% end %>
<%= content_for :notice do%>
  <p>Bonne nouvelle!</p>
<% end %>

Vous pouvez également modifier la partie de mise en page commune pour chaque page.

Recommended Posts

[Rails] Apprenez le rendement pour comprendre content_for
Commandes de base de Rails que vous souhaitez apprendre
Comment écrire des rails
Présentation de Bootstrap à Rails 5
Présentation de Bootstrap aux rails !!
Présentation de Vue.js à Rails
Comment désinstaller Rails
Comprendre la migration dans les rails
[Rails] Entièrement compris form_with
[rails] Comment publier des images
[Rails] Comment utiliser enum
[Rails] Comment utiliser enum
Comment lire les itinéraires des rails
Comment utiliser la jonction de rails
[Rails] Ajouter une colonne à concevoir
Comment terminer le serveur de rails
Comment écrire des graines de Rails
[Rails] Comment utiliser la validation
[Rails] Comment désactiver les turbolinks
Passer des paramètres à Rails link_to
[Rails] Comment utiliser authenticate_user!
[Rails] Comment mettre en œuvre le scraping
[Rails] Comment faire des graines
Comment écrire le routage Rails
[Rails] Comment installer simple_calendar
Thread Java pour comprendre vaguement
[Rails] Comment installer reCAPTCHA
Présentation du client gRPC aux rails
[Rails] Comment utiliser Scope
Cheet sheet pour les personnes expérimentées en Java pour apprendre Ruby (rails)
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie