Question

Ok, je comprends petit à petit, mais j'ai besoin d'un peu plus d'aide.

J'utilise un time_select à mon avis, j'ai donc affaire à une affectation multiparamétrique.Vérifier.

<%= pt.time_select :time, :twelve_hour => true, :minute_step => 5 %>

MAIS je fais la mauvaise chose et je l'utilise avec un attribut qui n'est pas dans la base de données :

attr_accessor time

Par conséquent, comme il ne peut pas consulter la base de données, il ne peut pas reconstituer ce que l'affectation multiparamétrique est censée être et j'obtiens donc l'erreur suivante :

1 error(s) on assignment of multiparameter attributes

J'utilise donc les informations que j'ai trouvées ici:

  composed_of :time,
            :class_name => 'DateTime',
            :mapping => [%w(DateTime to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }

Autres liens utiles : rubyonrails.org | apidock.com

Cela supprime l'erreur, mais maintenant le problème est que le plugin que j'utilise ne fonctionne pas correctement, je pense.j'utilise http://code.google.com/p/rails-twelve-hour-time-plugin/.Le but étant que j'essaie d'obtenir la sélection de l'heure pour avoir 3 listes déroulantes : hh:mm am/pm.

La question est donc :comment dois-je ajuster mon composed_of method pour qu'il soit correctement converti par le plugin ?OU existe-t-il une meilleure méthode face à cette folie ?

Je ne suis pas sûr de quels mappeurs/constructeurs/convertisseurs j'ai besoin.À l'heure actuelle, l'objet conserve l'heure et les minutes, sauf que l'heure n'est pas convertie en 24 heures (ce dont le plugin est censé s'occuper, pensais-je).

Était-ce utile?

La solution

Le problème était que je n'avais pas bien suivi l'article.J'aurais dû utiliser le modèle Time.

  composed_of :time,
            :class_name => 'Time',
            :mapping => [%w(Time to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }

On dirait que c'est un problème courant.Pour plus d'informations à ce sujet, consultez ceci lien.La suggestion qui y est donnée est de faire :

class Whatever < ActiveRecord::Base
  ...

  attr_accessor :arrival_time
  columns_hash["arrival_time"] = ActiveRecord::ConnectionAdapters::Column.new("arrival_time", nil, "time")
end

Je travaille toujours sur des bugs, mais je mettrai à jour cela lorsque quelque chose fonctionnera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top