Merci pour vos réponses.
J'ai fait au plus simple.
J'ai ajouté dans environnement.rb les lignes suivantes :
class ActiveRecord::Base
def url_propre(str)
n = str.chars.downcase.strip.to_s
n.gsub!(/[àáâãäåāă]/, 'a')
n.gsub!(/æ/, 'ae')
n.gsub!(/[ďđ]/, 'd')
n.gsub!(/[çćčĉċ]/, 'c')
n.gsub!(/[èéêëēęěĕė]/, 'e')
n.gsub!(/ƒ/, 'f')
n.gsub!(/[ĝğġģ]/, 'g')
n.gsub!(/[ĥħ]/, 'h')
n.gsub!(/[ììíîïīĩĭ]/, 'i')
n.gsub!(/[įıijĵ]/, 'j')
n.gsub!(/[ķĸ]/, 'k')
n.gsub!(/[łľĺļŀ]/, 'l')
n.gsub!(/[ñńňņʼnŋ]/, 'n')
n.gsub!(/[òóôõöøōőŏŏ]/, 'o')
n.gsub!(/OE/, 'oe')
n.gsub!(/ą/, 'q')
n.gsub!(/[ŕřŗ]/, 'r')
n.gsub!(/[śšşŝș]/, 's')
n.gsub!(/[ťţŧț]/, 't')
n.gsub!(/[ùúûüūůűŭũų]/, 'u')
n.gsub!(/ŵ/, 'w')
n.gsub!(/[ýÿŷ]/, 'y')
n.gsub!(/[žżź]/, 'z')
n.gsub!(/\s+/, ' ')
n.gsub!(/[^a-zA-Z0-9]/, '-')
n.gsub!(/-+/,'-')
n
end
end
Attention, pensez à redémarrer votre serveur après avoir modifié
environnement.rb !
Puis dans mes modèles, j'utilise :
def to_param
"#{id}-#{url_propre(nom)}"
end
Et c'est super :)
Pierre.
On 29 juil, 23:24, "Guillaume \"Zifro\" DESRAT"
<[EMAIL PROTECTED]> wrote:
> Pour ma part, pour les _petites_ modifications du langage, je le place
> à la fin de environment.rb (parce que pour, c'est une modification de
> l'environnement...) ; si tu en as trop, mets les dans un module et
> étend tes classes à partir de là.
> Donc je te propose de rajouter ceci :
>
> class ActiveRecord::Base
> # tes modifications dans la classe
> end
>
> Mais peut-être que quelqu'un d'autre a une préférence pour une autre solution.
>
> Le 29/07/07, Pierre Valade<[EMAIL PROTECTED]> a écrit :
>
>
>
> > Pardon, je corrige, ensuite je voudrais faire :
>
> > def to_param
> > "#{id}-#{nom.normalize.gsub(/[^a-z1-9]+/i, '-')}"
> > end
>
> > Bien sur :)
>
> > Le 29/07/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> a écrit :
> > > Bonjour à tous pour mon premier message sur cette liste, étant un
> > > nouvel utilisation (et déjà fan) de RoR.
>
> > > Je voudrais partager une méthode qui permet de convertir les accents
> > > en caractères correspondants non accentués.
> > > Je l'utilise pour générer des url propres en redéfinissant la méthode
> > > to_param
>
> > > Dois-je placer ce code pour l'utiliser partout dans Rails ?
>
> > > def self.normalize(str)
> > > n = str.chars.downcase.strip.to_s
> > > n.gsub!(/[àáâãäåāă]/, 'a')
> > > n.gsub!(/æ/, 'ae')
> > > n.gsub!(/[ďđ]/, 'd')
> > > n.gsub!(/[çćčĉċ]/, 'c')
> > > n.gsub!(/[èéêëēęěĕė]/, 'e')
> > > n.gsub!(/ƒ/, 'f')
> > > n.gsub!(/[ĝğġģ]/, 'g')
> > > n.gsub!(/[ĥħ]/, 'h')
> > > n.gsub!(/[ììíîïīĩĭ]/, 'i')
> > > n.gsub!(/[įıijĵ]/, 'j')
> > > n.gsub!(/[ķĸ]/, 'k')
> > > n.gsub!(/[łľĺļŀ]/, 'l')
> > > n.gsub!(/[ñńňņʼnŋ]/, 'n')
> > > n.gsub!(/[òóôõöøōőŏŏ]/, 'o')
> > > n.gsub!(/OE/, 'oe')
> > > n.gsub!(/ą/, 'q')
> > > n.gsub!(/[ŕřŗ]/, 'r')
> > > n.gsub!(/[śšşŝș]/, 's')
> > > n.gsub!(/[ťţŧț]/, 't')
> > > n.gsub!(/[ùúûüūůűŭũų]/, 'u')
> > > n.gsub!(/ŵ/, 'w')
> > > n.gsub!(/[ýÿŷ]/, 'y')
> > > n.gsub!(/[žżź]/, 'z')
> > > n.gsub!(/\s+/, ' ')
> > > n.gsub!(/[^\sa-z0-9_-]/, '')
> > > n
> > > end
>
> > > Ensuite, je voudrais faire :
> > > class XX < ActiveRecord::Base
> > > def to_param
> > > "#{id}-#{nom.gsub(/[^a-z1-9]+/i, '-')}"
> > > end
> > > end
>
> > > Merci par avance,
>
> > > Cordialement,
>
> > > Pierre.
>
> --
> Guillaume DESRAT / Zifro AKA guillaumedhttp://zlab.fr/
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---