Ceci semble fonctionner chez moi, si j'ai bien compris ta demande :

irb(main):001:0> options = {:fields => {:login => { "fieldname" => 
"Login", "pos" => 3 }, :firstname => { "fieldname" => "Nom", "pos" => 1 
}, :lastname => { "fieldname" => "Prénom", "pos" => 2 }, :email 
=> { "fieldname" => "Email", "vtype" => "email", "pos" => 4 }, :address 
=> { "fieldname" => "Adresse", "pos" => 5 }}}
=> {:fields=>{:email=>{"pos"=>4, "vtype"=>"email", 
"fieldname"=>"Email"}, :address=>{"pos"=>5, "fieldname"=>"Adresse"}, 
:login=>{"pos"=>3, "fieldname"=>"Login"}, :firstname=>{"pos"=>1, 
"fieldname"=>"Nom"}, :lastname=>{"pos"=>2, "fieldname"=>"Prénom"}}}

irb(main):002:0> options[:fields].sort_by{ |field| field[1]["pos"] }
=> [[:firstname, {"pos"=>1, "fieldname"=>"Nom"}], [:lastname, {"pos"=>2, 
"fieldname"=>"Prénom"}], [:login, {"pos"=>3, 
"fieldname"=>"Login"}], [:email, {"pos"=>4, "vtype"=>"email", 
"fieldname"=>"Email"}], [:address, {"pos"=>5, "fieldname"=>"Adresse"}]]

En revanche je n'ai pas très bien compris pourquoi sort_by oblige le 
passage à un tableau de "|field|", mais quelqu'un pourra peut-être 
détailler ça. Le champ email par exemple est "transformé" comme suit à 
l'intérieur du bloc sort_by : [:email, {"pos"=>4, "vtype"=>"email", 
"fieldname"=>"Email"}]:Array, ce qui oblige à prendre le "[1]", mais il 
y a peut-être plus propre ou joli je ne sais pas.

Cdt,
-- 
Jean-Baptiste


Tony Chauveau a écrit :
> Bonjour,
>
> Il y a quelques temps, j'ai pu voir que certains ici étaient très fort
> pour ordonner des tableaux. Ne trouvant pas comment m'y prendre pour
> classer correctement un hash, je viens demander vos lumières :
>
> Voici déjà le hash :
>
> :fields => {:login => { "fieldname" => "Login", "pos" => 3 }, :firstname
> => { "fieldname" => "Nom", "pos" => 1 }, :lastname => { "fieldname" =>
> "Prénom", "pos" => 2 }, :email => { "fieldname" => "Email",
> "vtype" => "email", "pos" => 4 }, :address => { "fieldname" =>
> "Adresse", "pos" => 5 }}
>
> Ce hash est ensuite utilisé en diverses occasions donc une fonction sur
> laquelle je sors les clés que je groupe par 2 dans un tableau. Celà
> donne le code suivant :
>
> requested_attributes = options[:fields].keys.in_groups_of(2)
>
> Avant d'ajouter le "pos", ce tableau me classait mes éléments par ordre
> alphabétique (:address, :email, :firstname, :lastname, :login) , mon but
> est de permettre de choisir l'ordre d'apparition de mes champs en
> fonction de ce "pos".
>
> J'ai tenté avec sort_by sans vraiment de succès, j'imagine que je
> l'emploi assez mal.
>
> Merci.
>   

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