Rails - Des titres dynamiques pour votre application rails
Tagged:

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

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