=?iso-8859-1?q?majuscule_erron=E9?=

Bonjour, j’avais précedement écris à propos de la méthode upcase de
ruby, qui ne met pas les caractères accentués en majuscules.
sur ce on m’a proposé un :
chaine.upcase.tr(‘é’,‘Ã?’)
ce qui à priori devrait fonctionner (d’après la doc). Ben en fait non,
chez moi ça marche pas. Rails refuse obstinement de transformer mes
caractères accentués ! via tr ou même tr_s

Bonjour

pour expérimenter, rien de tel qu’un petit test unitaire:

upcase.rb

require ‘test/unit’
class Tests < Test::Unit::TestCase
def test_upcase
assert_equal “Ã?LÃ?PHANT”, “éléphant”.upcase.tr(“é”,“Ã?”)
end
end

lancement

C:\dev\scripts\string>upcase.rb
Loaded suite C:/dev/scripts/string/upcase
Started
.
Finished in 0.0 seconds.

1 tests, 1 assertions, 0 failures, 0 errors

Ca marche bien.

Je suppose que tu fais

chaine.upcase.tr('é",“Ã?”)

et non pas

chaine = chaine.upcase.tr('é",“Ã?”)

ce qui explique peut être cela.

si tu veux modifier le receveur (chaine), utilise chaine.upcase!.tr!
('é",“Ã?”)

a+

Thibaut

ce qui donne pour terminer:

require ‘test/unit’

class Tests < Test::Unit::TestCase

def test_upcase
assert_equal “Ã?LÃ?PHANT”, “éléphant”.upcase.tr(“é”,“Ã?”)
end

def test_destructive_upcase
chaine = “éléphant”
chaine.upcase!.tr!(“é”,“Ã?”)
assert_equal “Ã?LÃ?PHANT”, chaine
end

end

=> 2 tests, 2 assertions, 0 failures, 0 errors

J’ai eu les pires problèmes avec les caractères accentués avant de
m’apercevoir que mon source n’était pas sauvegardé en UTF-8.

Après avoir indiqué à Radrails de m’enregistrer tout en UTF-8 je n’ai
plus
eu de problèmes.

(s’assurer aussi que ruby s’attend à trouver de l’UTF-8)

pour :
<%= bdel_pupil.nom.upcase!.tr!(‘é’, ‘Ã?’) %>

j’obtient ::
NoMethodError in Bdel#list Showing app/views/bdel/list.rhtml
where line #14 raised:

You have a nil object when you didn’t expect it!
The error occured while evaluating nil.tr!
Extracted source (around line #14):

11:


12: (<%= bdel_pupil.age %> ans) -
13:
14: <%=
bdel_pupil.nom.upcase!.tr!(‘�’, ‘�’) %> <%=
bdel_pupil.prenom %>

15: <%= link_to ‘Voir’, :action => ‘show’, :id => bdel_pupil %> |
16:
17: <%= link_to ‘Editer’, :action => ‘edit’, :id => bdel_pupil %>
|

   RAILS_ROOT: ./script/../config/..

Thibaut Barrère [email protected] a écrit : ce qui donne pour
terminer:

require ‘test/unit’

class Tests < Test::Unit::TestCase

def test_upcase
assert_equal “Ã?LÃ?PHANT”, “éléphant”.upcase.tr(“é”,“Ã?”)
end

def test_destructive_upcase
chaine = “éléphant”
chaine.upcase!.tr!(“é”,“Ã?”)
assert_equal “Ã?LÃ?PHANT”, chaine
end

end

=> 2 tests, 2 assertions, 0 failures, 0 errors


Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance

j’ai effectivement tenté sans les accents (j’ai même commencé par là …)
cependant, même en essayant de changer l’encodage du fichier… je
n’arrive pas à transformer mes caractères.

Thibaut Barrère [email protected] a écrit :

bdel_pupil.nom.upcase!.tr!

Sur ton exemple précis, il faut utiliser <%=
bdel_pupil.nom.upcase.tr(… %> (sans les points
d’exclamation)

Je te recommande d’aller regarder la doc de upcase!/upcase et tr/tr!
pour que tu comprennes bien les différences entre ces deux forms.


Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance

bdel_pupil.nom.upcase!.tr!

Sur ton exemple précis, il faut utiliser <%=
bdel_pupil.nom.upcase.tr(…
%> (sans les points d’exclamation)

Je te recommande d’aller regarder la doc de upcase!/upcase et tr/tr!
pour
que tu comprennes bien les différences entre ces deux forms.