Dans votre opinion, faites quelque chose comme ceci:
<% content_for :title, "Title for specific page" %>
<!-- or -->
<h1><%= content_for(:title, "Title for specific page") %></h1>
Ce qui suit va dans le fichier de mise en page:
<head>
<title><%= yield(:title) %></title>
<!-- Additional header tags here -->
</head>
<body>
<!-- If all pages contain a headline tag, it's preferable to put that in the layout file too -->
<h1><%= yield(:title) %></h1>
</body>
Il est également possible d'encapsuler les instructions content_for
et yield(:title)
dans des méthodes d'assistance (comme d'autres l'ont déjà suggéré). Cependant, dans des cas simples comme celui-ci, j'aime mettre le code nécessaire directement dans les vues spécifiques sans aide personnalisée.
Christoph Schiessl
la source
<title><%= (yield(:title) + " - " unless yield(:title).blank?).to_s + "This is always shown" %></title>
dans la mise<% content_for :title, "Conditional title" %>
en page et dans les vues.<h1><%= content_for(:title, "Title for specific page") %></h1>
je ne vois rien en sortie dans mon DOM (c'est-à-dire que je n'ai<h1></h1>
aucun contenu). Cependant, mon<title>Title for specific page</title>
fonctionne correctement. Des idées?Voici une option simple que j'aime utiliser
Dans votre mise en page
Et en haut de votre modèle de page (première ligne)
En raison de la façon dont la mise en page et les modèles de page sont analysés, @ title = "Home" est évalué avant le rendu de la mise en page.
la source
La meilleure pratique consiste à utiliser content_for.
Tout d'abord, ajoutez quelques méthodes d'assistance (par exemple, stick dans app / helpers / application_helper.rb):
Ensuite, dans votre vue de mise en page, vous pouvez simplement utiliser:
... et dans la vue elle-même:
Cette méthode a l'avantage de vous permettre de mélanger les emplacements où vous collez la balise h1 pour votre titre et de garder votre contrôleur agréable et exempt de variables @title embêtantes.
la source
@content_for_title
?@content_for_title
. Devrait être(content_for(:title) + ' — ' if content_for?(:title)).to_s + 'My Cool Site'
. Ensuite, pour le définir de votre vue, juste<% content_for :title, 'My Page Title' %>
@content_for_title
est ce qui se passait lorsque vous utilisiezcontent_for
, au moment où ce commentaire a été écrit. Je pense que ce n'est plus le cas, mais je n'ai pas regardé récemment. Le commentaire de Toby J est correct pour les Rails d'aujourd'hui. Je mettrai à jour ma réponse d'origine.Une amélioration sur @opsb et une forme plus complète de @FouZ :
Dans
application.html.erb
:Dans le fichier view erb ou son contrôleur:
la source
Regardez dans
content_for
: http://railscasts.com/episodes/8la source
Sans plus de détails sur le cas d'utilisation ou les exigences que vous essayez de satisfaire, je peux penser à plusieurs alternatives:
1) Changez le titre dans l'une de vos pages de mise en page et utilisez une méthode d'aide stockée dans
application_helper.rb
Cette approche vous donnera un titre unique pour chaque page de mise en page.
2) Railscasts suggère d'utiliser un partiel pour charger ce qui apparaît entre les balises HEAD
3) Utilisez des appels javascript / ajax pour manipuler le DOM si vous devez changer le titre après l'événement de chargement.
Peut-être que vous ne voulez pas vraiment changer le contenu étiqueté par l'
title
élément. Peut-être avez-vous vraiment besoin d'un fil d'Ariane, afin que vos utilisateurs sachent toujours où ils se trouvent par rapport à la hiérarchie de navigation de votre site. Bien que je me sois bien débrouillée avec le plugin goldberg, je suis sûr qu'il existe d'autres moyens de tirer parti des mêmes fonctionnalités.la source
J'utilise "nifty_layout" de nifty_generator qui fournit une variable de titre que je peux appeler ensuite sur la page en utilisant:
<% title "Title of page" %>
Je peux également utiliser
<% title "Title of page", false %>
pour afficher le titre dans le titre du navigateur et non dans la page elle-même.la source
Vous pouvez également le définir dans un before_filter de votre contrôleur.
Vous pouvez ensuite définir des conditions dans la méthode set_title pour définir des titres différents pour différentes actions dans le contrôleur. C'est bien de pouvoir voir tous les titres de page pertinents dans votre contrôleur.
la source
j'utilise
ce pluginces aides Rails que j'ai écrites: http://web.archive.org/web/20130117090719/http://henrik.nyh.se/2007/11/my-rails-title-helpers/la source
approche pour le titrage de page à l'aide de la méthode content_for et
1 . nom partiel: _page_title.html.erb
2. Utilisation dans application.html.erb à l'intérieur de la balise title
3. Utilisation dans * .html.erb respectif à l'exclusion de l'application.html.erb Il suffit de coller ceci dans n'importe quel .html.erb et de fournir le titre de la page
la source
En bref, je peux l'écrire comme suit
la source
J'aime la méthode d'opsb, mais cette méthode fonctionne aussi.
la source
La meilleure façon / propre de faire ceci:
la source
Je voudrais ajouter ma variante assez simple.
Dans ApplicationController, définissez cette méthode:
Après cela, vous pouvez appeler get_title à partir de la balise de titre de votre mise en page. Vous pouvez définir un titre plus spécifique pour votre page en définissant la variable @action_title_name dans vos actions.
la source