Oops, et sans l'erreur : if value =~ /(\d+):(\d+)/ Julien
On 8 juil, 00:19, Meshak <[email protected]> wrote: > J'aurais même proposé de stocker ça en minutes et donc en integer ! > "1.33333..." reste moins joli que "80" à stocker. :-) > > Basecamp (de 37signals) offre la double saisie : "1:30" ou "1.5". À > l'affichage tout est en flottant à 2 décimales. > > Donc je conseillerais dans le modèle, un truc du genre : > > def field_in_hours > (read_attribute(:field) || 0) * 60.0 > end > > def field_in_hours=(value) > value = value.to_s > if value =~ /\d+:\d+/ > value = Regexp.last_match(1).to_i * 60 + Regexp.last_match(2).to_i > else > value = value.gsub(/\s+/, '').sub(',', '.').to_f * 60 > end > write_attribute(:field, value.round) > end > > Et dans la vue : > > <%= f.text_field :field_in_hours %> > > Au final, on a :field en minutes, et :field_in_hours en heures (format > flottant). > > Julien > --~--~---------~--~----~------------~-------~--~----~ 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] -~----------~----~----~----~------~----~------~--~---
