Des floats pour stocker des heures... beurk.

Mais bon, si tu y tiens, un petit truc que tu peux mettre dans ton modèle :

def mon_champs_in_hours
... # mon_champs => float => string
end

def mon_champs_in_hours= value
... # string => float => mon_champs
end

Et du coup, dans ta vue :

<%= f.text_field :mon_champs_in_hours %>

Ceci dit, pourquoi ne pas stocker cette valeur tout simplement en texte ?

Michel Belleville


2009/7/7 Guillaume Morain <[email protected]>

>
> Bonjour,
>
> J'ai un problème assez récurrent en rails dont je n'arrive pas à trouver
> une solution optimale.
>
> En fait, ma problématique est d'afficher des données dans un format
> "maison".
>
> Exemple:
>
> En base, je vais avoir un float qui correspond à des heures.
>
> 1.5 => 1:30
>
> J'ai fait un helper qui à cette tête là:
>
> class ActionView::Helpers::FormBuilder
>
>  def hours_text_field(method, options={})
>    if options[:value].is_a?(Float)
>      options[:value] = options[:value].to_h
>    end
>    text_field method, options
>  end
>
> end
>
> le to_h me convertit le float en heures.
>
> Dans ma vue, j'ai donc ceci :
>
> <%= f.hours_text_field :mon_champ, :value => @monmodele.monchamp %>
>
> Et j'ai divers problèmes:
>
> Le premier d'entre eux se situe dans le retour sur erreur: en effet, la
> valeur va être à nouveau convertit en "heures" alors que je voudrais
> laisser la valeur initialement entrée.
>
> Deuxieme probleme, au moment de la mise en base, le modele typecast le
> champ en float sans que je puisse rien y faire. Je ne peux pas dériver
> le string_to_float de ActiveRecord::ConnectionAdapters::Column vu que
> dans mon application, j'ai deux interprétations pour le même type de
> champ en base.
>
> En général, le problème d'interprétation des champs dans une vue me pose
> problème dès que je sors de la représentation "classique" de ce type de
> champ.
>
> Des idées ?
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>

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