2016-04-09 1 views
0

J'utilise le gem 'datetimepicker-rails' et en utilisant spécifiquement le date_picker dans mon simple_form en tant que tel:Rails 4 - La date est le jour mélange d'appariement et mois après formulaire de soumission

<%= f.input :tripDate, :as => :date_picker, label: 'Pick-up Date', placeholder: 'Click icon on right', input_html: {data: {date_options: {showClose: true}}} %> 

La zone de saisie pour ce champ affiche la bonne sortie de la date dans le format que je veux, mais la date dans la base de données qui est enregistrée est enregistrée avec le mois et le jour étant modifiés les uns avec les autres.

La documentation indique l'évolution config/locales/en.yml donc je l'ai changé à ce format:

en: 
    datepicker: 
    dformat: '%m/%d/%Y'    # display format of the date (this is the default, can be ommited) 
    pformat: 'MM/DD/YYYY'    # picking format of the date (this is the default, can be ommited) 
    timepicker: 
    dformat: '%R'      # display format of the time (this is the default, can be ommited) 
    pformat: 'hh:mm A'    # picking format of the time (this is the default, can be ommited) 
    dayViewHeaderFormat: 'MMMM YYYY' # picking format of the time (this is the default, can be ommited) 

entrée prévue à DB: 2016/04/09

réelle Entrée à DB après changements locaux/en.yml: 2016/09/04

donc cela me montre que changer le format est en quelque sorte changer le jour et le mois. Le paramètre qui est engagé à la DB est: ["tripDate", "2016-09-04"]

Mais les rails des messages de journal me donne la sortie de date correcte: Started POST "/reservations" for ::1 at 2016-04-09 09:00:21 -0400

Cela me porte à croire qu'il est quelque chose de mal avec la pierre précieuse peut-être.

Je ne fais aucune autre modification à l'attribut tripDate avant d'enregistrer. Quelqu'un peut-il expliquer ce qui se passe et quelle serait la solution?

+0

Comment inspectez-vous l'enregistrement créé? Est-ce que les données dans la base de données sont correctes ou est-ce seulement l'affichage? –

+0

@FrederickCheung J'ai essayé plusieurs méthodes, Im regardant les journaux dans le terminal sur ma machine locale puis j'ai couru la console des rails en tirant la colonne en l'imprimant et en regardant aussi les données récupérées dans mon application. – ayounis90

+0

quel que soit le format de votre saisie, les données stockées dans la db ont le même format - vérifiez dans la console rails que la date a la valeur correcte (utilisez strftime pour reformater si vous voulez). Si cela produit un résultat correct mais que vos vues ne le sont pas, alors le problème est de savoir comment les vues mettent en forme les données, si les données dans la base de données ne sont pas correctes, alors le problème est votre entrée. Déterminez lequel il est et mettez à jour votre question en conséquence (il est concevable d'être à la fois dans ce cas se concentrer sur l'obtention des bonnes données dans le db d'abord) –

Répondre

0

La solution à mon dilemme a été résolue en suivant this SO post. Plus précisément, la toute dernière solution donnée au problème qui dit de faire quelque chose le long de ces lignes:

def create 
..... 
@person.dob = DateTime.strptime(params[:person][:dob], '%m/%d/%Y').to_date 
..... 
@person.save 
..... 
end