2010-07-12 3 views
0

Nous sommes actuellement en train de mettre à jour notre version rails et j'ai rencontré une erreur bizarre dans l'un de mes tags date_select.tag date_select lors de la mise à niveau de 2.1.2 à 2.3.8

Voici le coupable:

<%= date_select :consultant_assignment, :start_date, :order => [:day, :month, :year], 
:start_year => 5.years.ago.year, :end_year => 5.years.from_now.year, :use_short_month => true %> 

Cela jette une erreur comme ceci:

NoMethodError dans les profils # montrent

Affichage app/views/personnes/_upcoming_assignments.html.erb où ligne # 46 soulevée:

Vous avez un objet nul quand vous ne l'attendiez pas! Vous avez peut-être attendu une instance de Array. L'erreur est survenue lors de l'évaluation nil.size

source décompressée (autour de la ligne n ° 46):

43:   <label for="consultant_assignment_start_date"><%= _('Start') %>:</label> 
44:   <% debugger %> 
45:   
46:   <%= date_select :consultant_assignment, :start_date, :order => [:day, :month, :year], :start_year => 5.years.ago.year, :end_year => 5.years.from_now.year, :use_short_month => true %> 
47:   
48:   
49:   

J'ai essayé de retracer ce problème et il semble que l'erreur est générée quand je mets dans: option month dans le tableau: order. Donc quand je fais: commande => [: jour,: année] la page se charge parfaitement.

J'ai cherché le problème exact mais étant plus d'un frontal, je ne suis pas sûr comment procéder avec ceci. Est-ce une erreur de mon code? Ou est-ce une méthode obsolète?

Voici le application trace:

/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:746:in `_unmemoized_month_names' 
/opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/memoizable.rb:72:in `month_names' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:781:in `month_name' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:708:in `select_month' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:705:in `upto' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:705:in `select_month' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:898:in `send' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:898:in `build_selects_from_types' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:896:in `each' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:896:in `build_selects_from_types' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:646:in `select_date' 
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:920:in `to_date_select_tag_without_error_wrapping' 

Je googled sur les noms unmemoized mois, mais je l'ai trouvé nada. Bon, j'ai essayé de supprimer l'ensemble de la clause de commande pour que ça marche. Cette fois, il ne lance pas d'erreur mais le tag n'apparaît pas! J'ai essayé de vérifier dans irb et apparemment mon tag date_select ne renvoie pas de balises de sélection, mais juste un tas de balises cachées!

J'ai essayé avec les rails par défaut exemple:

date_select("post", "written_on") 

retours RIR ceci:

=> "\ n \ n \ n"

comme vous pouvez le voir, aucune balise select nulle part. J'ai essayé datetime_select et je vois une étiquette de sélection là. Alors, quel est le problème avec date_select 2.3.8?

+0

Fonctionne pour moi.pas votre date de la base de données wheather est correct ou pas aussi ref http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#M002264 – Salil

+0

J'ai essayé de regarder ceci et encore sans résultat J'ai essayé de regarder la nouvelle chose i18n des rails et fait un config/locale/en.yml et config/initializers/locale.yml et je reçois toujours la même erreur – corroded

Répondre

0

Il semble que ce soit un problème avec i18n car les rails ne peuvent pas voir les noms des mois déclarés pour une raison quelconque (il DEVRAIT le voir puisque la langue par défaut est en). En fait, pour une raison quelconque, il ne voit pas la langue par défaut. Quoi qu'il en soit, notre solution rapide pour l'instant était d'ajouter une constante MONTH_NAMES dans constants.rb et de l'ajouter aux options de date_select.

0

utiliser ces formats

date_select (nom_objet, méthode, options = {}, html_options = {})

mis start_year, END_YEAR, order_field etc dans la balise d'options.

Je pense que cela pourrait vous aider.

Les sélections sont préparées pour l'affectation de plusieurs paramètres à un objet Enregistrement actif.

Remarque: Si le jour n'est pas inclus en tant qu'option mais le mois est, le jour sera défini sur le 1er pour s'assurer que tous les choix du mois sont valides.

+0

il montre toujours la même erreur. Je ne pense pas que le format est le problème car cela fonctionne quand je sors l'option: month, non? – corroded

+0

Un format de temps crée un problème s'il vous plaît suivez ce lien, il pourrait vous aider. http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html –

+0

c'est le même lien que Salil m'a donné il y a 2 jours et je n'y ai rien trouvé :( – corroded

Questions connexes