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]
-~----------~----~----~----~------~----~------~--~---

Répondre à