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 ?