2010-07-25 13 views

Respuesta

16

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)

+0

Gracias, con ese enlace resolví dos problemas. Ojalá tuviera tiempo de ver todos los rieles emitidos. – jonathanrz

+0

eso es fantástico si queremos agregar una fecha desordenada mes día año. – baash05

+0

Hay una versión más reciente de este episodio, vea el episodio revisado: http://railscasts.com/episodes/213-calendars-revised – jasonleonhard

1

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> 
+0

Esto solo se aplica a las versiones de Rails anteriores a la 3.0; jQuery es el nuevo valor predeterminado. –

+0

@tharrison gracias por señalar eso. He actualizado – tvanfosson

17

he construido una joya de manejar esto:

https://github.com/albertopq/jquery_datepicker

Espero que ayude a alguien más.

+1

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. –

+0

He actualizado la gema. Debería funcionar bien ahora con la tubería. – albertopq

+2

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! –

4

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).

5

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.

https://github.com/joliss/jquery-ui-rails

2

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", -> 
+0

¿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

+0

Parece que su solución también funciona para Rails 4. – DJTripleThreat

+1

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. –