Il est important de pouvoir définir un titre unique pour chaque page de votre application, pour l'indexage par les moteurs de recherche, les bookmarks, les statistiques etc...
Dans une application basée sur Ruby on Rails on utilise un layout pour suivre le principe DRY, on écrit dans ce fichier tout le code commun aux différentes pages comme par exemple :
un titre pour mon site
<%= @content_for_layout %>
Le problème dans cet exemple c'est que toutes les pages auront la même valeur entre les balises "title"
Pour corriger cela il y a deux solutions :
<%= @page_title %>
Le problème avec cette solution c'est que vous devez définir une variable @page_title dans chaque action de vos controlleurs.
La deuxième (la meilleure à mon goût) :
Ma super appli - <%= params[:controller].capitalize %> - <%= params[:action].capitalize %>
On obtiendra cette fois un titre différent pour chaque action composé d'une chaîne fixe, du nom du controlleur et du nom de l'action. Parfait pour les stats ;)
Articles similaires
- Comment choisir son langage/framework de développement web?
- Pourquoi choisir CakePHP au détriment de Ruby on Rails
- Créer un projet subversion chez l'hébergeur Dreamhost
- Rails - moteur de recherche pour l'API Ruby On Rails
- Quel developpeur Rails êtes vous?
- Rails - Pense-bête
- EasyEclipse nouvelle version
- Rails - Helper pour afficher un score sous forme d'image
- David H. Hansson on the Future of Rails
- Rails - Déploiement d’une application Rails avec Capistrano (suite)


ah ouaip bien vu l'idée...
ah ouaip bien vu l'idée... j'utilisais la variable personnellement mais c'est vrai que si le nom des controlleurs est bien choisi et qu'on a pas trop de contrainte de ce côté là (parce que bon des pages qui s'appellent Agenda - NewEntryForToday c'est pas terrible non plus niveau humain non ?)
Nan mais ouaip c'est vraiment bien vu je trouve... merci pour l'astuce :D
plus qu'à bien choisir ses
plus qu'à bien choisir ses noms de controller et d'action ;)
On peut mettre Comme cela on
On peut mettre
Comme cela on est pas obligé de définir un titre dans chaque controleur mais seulement dans ceux où l'on souhaite le changer (pages articles par exemple)
argh mon code ruby est
argh mon code ruby est passé à la trappe !!
je voulais dire : = @page_title || "Titre par défaut"
pas mal aussi !
pas mal aussi !
Et là, pour faire encore
Et là, pour faire encore plus DRY, plus qu'à déplacer le tout dans un Helpers... Qu'en pensez-vous ?
je ne comprend pas trop ton
je ne comprend pas trop ton idée
c'est déjà DRY puisque c'est à un seul endroit dans "standard-layout.rhtml" dans mon cas
personnellement je ne vois pas l'intérêt, mais précise ton idée
Oui, sauf si tu as plusieurs
Oui, sauf si tu as plusieurs layouts differents.... Ca devient moins DRY du coup. Je suis donc plutot d accord avec burningHat.
ok, dans ce cas je suis
ok, dans ce cas je suis d'accord aussi
Yep voilà, c'est l'idée
Yep voilà, c'est l'idée exprimée par euphrate_ylb que j'avais en tête lorsque j'ai commenté... navré de ne pas avoir mieux exposé mon raisonemment
@content_for_layout est
@content_for_layout est deprecie,on doit utiliser maintenant yield à la place.en plus avec yield tu a une autre solution pour creer des titres dynamiques.tu remplaces par .dans ta vue,tu ajoutes le code suivant:
//ici tu indique ton code
pour plus d'info,il y a un tres bon article sur le sujet à l'adresse suivante
http://errtheblog.com/post/28
désole,le blog a formaté
désole,le blog a formaté mon commentaire en eliminant tout ce qui a entre balise.remplace @page_title par yield :title.puis dans ta vue,
tu rajoutes
content_for :title do
//ici tu indiques ton code
endd
Merci pour ta précision. Un
Merci pour ta précision. Un code DRY c bien, mais un code a jour c encore mieux!
Sinon, il faut absolument qu on installe un plugin ou trouver un moyen pour pouvoir inserer du code source rails. Si quelqu un sait faire pour afficher proprement et avec de la couleur du code rails (comme pastie), je suis preneur!!!
tu veux dire un peux comme a
tu veux dire un peux comme a été redigé cet article ?
dans ce cas il faut encadrer chaque ligne par "[code]" et "[/code]"
pour ce commentaire j'ai mis des [] en réalité il faut des <>
ça devrait marcher