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

Répondre à