Estoy tratando de usar jQuery Datepicker para establecer un campo de fecha en mi formulario de Ruby on Rails, pero no puedo encontrar la forma de hacerlo. ¿Alguien me puede apuntar en la dirección correcta?¿Cómo conecto jQuery Datepicker a mi formulario de Ruby on Rails?
Respuesta
Ryan Bates tiene una muy buena explicación de todo esto:
http://railscasts.com/episodes/213-calendars (versión anterior se puede ver gratis) http://railscasts.com/episodes/213-calendars-revised (versión revisada que necesita una suscripción para ver)
Si usa Rails 3.0+, no debería necesitar hacer nada más que incluir jQuery y jQuery UI porque jQuery es el marco de JavaScript predeterminado.
Si utiliza Rails anterior a la 3.0 o usa Prototype (u otra cosa), necesitará usar jQuery en el modo noConflict. Asegúrese de incluir jQuery después de Prototipo (su otro marco) se ha cargado el uso de algo similar a:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jqueryui.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
// here the $ function is jQuery's because it's an argument
// to the ready handler
$('#dateField').datepicker();
});
// here the $ function is Prototype's
</script>
Esto solo se aplica a las versiones de Rails anteriores a la 3.0; jQuery es el nuevo valor predeterminado. –
@tharrison gracias por señalar eso. He actualizado – tvanfosson
he construido una joya de manejar esto:
https://github.com/albertopq/jquery_datepicker
Espero que ayude a alguien más.
Esto no parece funcionar si tiene activada la canalización de activos, ya que no puede instalar jquery la forma en que el complemento lo requiere a menos que desactive la interconexión. –
He actualizado la gema. Debería funcionar bien ahora con la tubería. – albertopq
https://github.com/joliss/jquery-ui-rails sería la mejor opción actual porque puede seleccionar y elegir módulos para incluir. Tu gema parece incluir toda la biblioteca de la interfaz de usuario. Me encanta tu extensión timepicker! –
Utilicé jquery_datepicker de albertopq que albertopq menciona y funciona con formularios regulares, atributos anidados, etc. Me facilitó las cosas. jquery_datepicker también pasa correctamente las opciones a las llamadas javascript necesarias de datepicker.
He aquí un ejemplo de una de mis formas anidadas:
<%= f.datepicker 'availability', :minDate => 0, :maxDate => "+8Y", :tab_index => autotab %>
MinDate y MaxDate se pasan al selector de fechas y tab_index se pone en el campo de texto HTML. (Autotab es solo mi ayudante de formulario para avanzar la pestaña + 1 ... mejor para mí que la codificación).
Por ahora, recomendaría la gema jquery-ui-rails sobre las otras respuestas por la sencilla razón de que puede incluir solo los activos de datepicker sin toda la biblioteca de jquery ui.
Puede ser un poco tarde pero yo uso una joya sencilla:
Gemfile: gem 'jquery-ui-rails'
application.js: //= require jquery-ui
application.css *= require jquery-ui
Y luego: Bundle install
Actualización para rieles 5.x
Paso 1.Instalar el jquery-ui-carriles joya
# gemfile
gem 'jquery-ui-rails'
# app/assets/javascripts/application.js
//= require jquery-ui/widgets/datepicker
# app/assets/stylesheets/application.css
*= require jquery-ui/datepicker
Paso 2. Asumiendo que tiene un recurso llamado evento con un campo de fecha o de fecha y hora se llama: iniciar, a continuación, en la forma que el: iniciar campo de un campo de texto.
# app/views/events/_form.html.erb
<%= f.label :start, 'Start Date' %>
<%= f.text_field :start %>
Paso 3. Agregue Javascript (en la sintaxis CoffeeScript aquí). Línea1) Si tiene Turbolinks habilitado (Turbolinks acelera la carga de la página Rails al hacer clic en un enlace cargándolo con AJAX), necesita agregar un contenedor o la función de JavaScript no se cargará cuando navegue a la página desde un enlace interno .
Line2) Estás apuntando a la identificación del elemento en tu formulario. Rails asigna automáticamente un id a la entrada del formulario combinando el nombre del modelo y el nombre del campo.
Línea3) Debe configurar el formato de fecha porque jQuery-UI y Rails usan diferentes formatos de fecha predeterminados.
# app/assets/javascripts/event.coffee
$(document).on 'turbolinks:load', ->
$('#event_start').datepicker
dateFormat: 'yy-mm-dd'
For Rails 4 todo es igual excepto la primera línea del archivo JavaScript (o CoffeeScript). El contenedor para cargar el JavaScript cuando Turbolinks está habilitado en Rails 4 es:
$(document).on "page:change", ->
¿Puede agregar un ejemplo para Rails 4? Estoy en el proceso de actualizar una aplicación de 3 a 4 y 'jquery_datepicker' dejó de funcionar, así que voy a usar tu solución. Si estoy usando la gema turbolinks en rieles 4, esta solución debería funcionar para mí ¿todavía está bien? – DJTripleThreat
Parece que su solución también funciona para Rails 4. – DJTripleThreat
DJTripleThreat: para Rails 4 todo sería igual excepto el envoltorio JavaScript (o en este caso CoffeeScript) para ejecutar con Turbolinks. He editado mi respuesta anterior para agregar el cambio. –
- 1. Ruby on Rails: formulario select
- 2. Ruby on Rails y jeditable (jquery)
- 3. Cómo deshabilitar un botón de envío de formulario "a là Ruby on Rails Way"?
- 4. Cómo dominar Ruby on Rails
- 5. Ruby on Rails will_paginate
- 6. select y onChange en un formulario de Ruby on Rails
- 7. Ruby on Rails: Token Fields - Railscast
- 8. ¿Cómo funciona Ruby on Rails?
- 9. Ruby vs. Ruby on Rails
- 10. Ruby on Rails Switch
- 11. Ruby on Rails enviar
- 12. Docsplit Ruby on Rails
- 13. Ruby on Rails: Módulos frente a clases
- 14. Usos de Ruby on Rails
- 15. Ruby on Rails: descargable
- 16. Ruby on Rails - ¿Variables globales?
- 17. upsert a granel con Ruby on Rails
- 18. Barra de notificaciones en Ruby on Rails
- 19. Ruby on Rails | Postgresql ignora mi contraseña en database.yml
- 20. SSL con Ruby on Rails
- 21. Ruby on Rails Generar vistas
- 22. link_to con Ruby on Rails
- 23. Ruby on Rails: Hello World
- 24. Ruby on Rails I18n interpolation
- 25. Ruby on Rails versus Python
- 26. Ruby on Rails ActiveRecord: pluralization
- 27. Ruby on rails y Node.js
- 28. Ruby on Rails asociación polimórfica
- 29. cómo manipular DOM con Ruby on Rails
- 30. integración angularjs con Ruby On Rails Forms
Gracias, con ese enlace resolví dos problemas. Ojalá tuviera tiempo de ver todos los rieles emitidos. – jonathanrz
eso es fantástico si queremos agregar una fecha desordenada mes día año. – baash05
Hay una versión más reciente de este episodio, vea el episodio revisado: http://railscasts.com/episodes/213-calendars-revised – jasonleonhard