Rails 4 + simple_form et jQuery UI. Datepicker ne fonctionne pas via les turbines
J'ai ce formulaire qui appelle datepicker:
...
<%= f.input :expiration_date, as: :datepicker, required: false %>
...
Simple_form wrapper:
app/entrées/datepicker_input.rb
class DatepickerInput < SimpleForm::Inputs::Base
def input
@builder.text_field(attribute_name, input_html_options) + \
@builder.hidden_field(attribute_name, { :class => attribute_name.to_s + "-alt"})
end
end
Lorsque la page est chargée à partir de zéro ( $(document).prêt de l'événement ), le code html suivant est généré:
<input class="datepicker optional form-control hasDatepicker" id="order_expiration_date" name="order[expiration_date]" type="text">
Toutefois, lorsque la page est chargée avec turbolinks (à partir de la barre de navigation "à la page load" de l'événement), le rendu HTML est le suivant:
<input class="datepicker optional form-control" id="order_expiration_date" name="order[expiration_date]" type="text">
Bien sûr, je peux simplement ajouter hasDatepicker classe .html.erb ou dans application.js fichier, mais je me demande si il est possible de le réaliser avec des Rails de la fonctionnalité.
source d'informationauteur Extrapolator
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé un correctif:
app/entrées/datepicker_input.rb gauche est la même, l'emballage des œuvres de nice.
assets/javascripts/application.js
Depuis :datepicker type d'entrée ajoute ".datepicker" classe de rendu HTML, il suffit juste de lier datepicker() pour tous les éléments de cette classe. Il fait le truc avec le moins de code.
Il est important de préciser d'entrée".datepicker" depuis le ".datepicker" la classe est ajoutée à l'étiquette et les balises input.
turbolinks lance une page:la charge de l'événement, j'ai ajouté gestionnaire pour les deux cas - lorsque la page se charge avec turbolinks, et quand il charge à partir de zéro (rafraîchissement de la fenêtre, lien enregistré dans les favoris, etc)
Maintenant la suivante .html.erb est rendu que j'attends:
de sortie:
Les ouvrages suivants, pour moi en
simple_form
etjquery-ui
:js:
$('input#date_field').datepicker();
forme:
<%= f.text_field :expiration_date, :placeholder => 'Select Date' %>
Sans
as: :datepicker
.Essayez ceci:
Javascript
app/assets/javascript/application.js devrait être