Les changements dans la forme ne sont pas enregistrées dans la base de données
J'essaye d'ajouter un champ de date pour mon formulaire.
J'ai ajouté bootstrap-datepicker-gem rails, toutes les css et javascript.
Quand j'ai le choix de la date dans le calendrier et cliquez sur Enregistrer, il n'est pas mis à jour dans la base de données.
Voici le code du formulaire:
= simple_form_for @model
= f.input :date_last, :required => true,
:input_html => { data: {behaviour: "datepicker"}},
:as => :string
= f.button :submit, 'Save', :class => 'btn btn-primary'
Je pense que cela pourrait avoir à faire avec les formats, mais vous ne savez pas où regarder.
Mise à jour
Il fonctionne quand je change de format par défaut aaaa-mm-jj (la valeur par défaut est mm/jj/aaaa):
$('[data-behaviour~=datepicker]').datepicker({"format": "yyyy-mm-dd", "weekStart": 1, "autoclose": true});
OriginalL'auteur Vitaly | 2013-03-14
Vous devez vous connecter pour publier un commentaire.
J'ai simplement répondu à une question similaire ici et ont compris ma réponse ci-dessous:
J'ai aussi besoin d'obtenir ce travail et le soutien de plusieurs paramètres régionaux qui n'utilisent pas de NOUS centrée sur les formats de date, par exemple: fr-AU (Australie), qui a le format de date jj/mm/aaaa.
Le Problème
Rails attend le format de la date à
yyyy-mm-dd
à partir du navigateur, mais vous souhaitez afficher la date dans les paramètres régionaux de l'utilisateur. Alors que la date de commande vous permet de spécifier le format pour l'affichage, il ne vous permet PAS de spécifier le format à être envoyé vers le serveur.La Solution
Construire un champ caché qui envoie le bon format de retour à votre serveur rails. Je le fais avec un " custom simple_form de contrôle d'entrée qui s'appuie à la fois de la date-picker champ de saisie et un champ caché, et utiliser du javascript pour convertir les rails de la date à laquelle le contrôle d'entrée des changements.
Le résultat est que vous pouvez avoir une belle bootstrap date-picker dans les rails et l'utiliser avec simple_form comme suit:
Ou d'utiliser un format de date longue:
Mise en œuvre
De créer ou de modifier les fichiers suivants:
Gemfile
config/locales/fr-AU.yml
config/locales/fr-fr.yml
app/assets/css/de l'application.css.scss
app/assets/javascripts/de l'application.js.café
Sinon, app/assets/javascripts/application.js
app/assets/javascripts/bootstrap-datepicker-rails.js.café
app/entrées/bootstrap_datepicker_input.rb
Merci, édité la réponse à refléter le bon format de chaîne de caractères
OriginalL'auteur Andrew Hacking
J'ai rencontré le même problème et la conversion de format de créer une action résolue pour moi:
OriginalL'auteur korada
Andrew Hacking réponse a très bien fonctionné pour moi, avec deux petites modifications à app/entrées/bootstrap_datepicker_input.rb. Je suis à l'aide de Rails 4.2.0. Il a été en ignorant la valeur dans le champ caché comme un doublon (depuis la saisie de texte et caché d'entrée sont identiques, "nom" attributs). Je suis passé:
... à ceci:
Aussi, j'étais en train de perdre wrapper options, j'ai donc ajouté un argument de
input
et de fusion de l'enveloppe dans les options options html.Ce:
... est devenu:
OriginalL'auteur
Ive a utilisé la réponse d'Andrew. Il a bien fonctionné pour moi, sauf qu'il n'a pas affiché le mois localisés noms corrects (Par exemple en juillet au lieu de Juli).
Voici ma démarche, si vous souhaitez utiliser une version localisée pour votre date_picker.
Par défaut, le bootsrap-datepicker gem charge toutes les versions linguistiques.
Si vous voulez par exemple pour charger uniquement la version anglaise et allemande, vous devez changer application.js
de
à
Prochaine étape est de changer BootstrapDatepickerInput
Ce que nous voulons maintenant, c'est que la langue est choisi dynamiquement à partir d'un paramètre donné.
donc ajouter la ligne suivante à la Saisie de classe à l'intérieur de la méthode de saisie
De notre point de vue, nous pouvons l'appeler maintenant le formulaire avec
OriginalL'auteur rider_on_rails