sql >> Base de Datos >  >> RDS >> Mysql

Condiciones de fecha utilizando la lógica de búsqueda

Una gran parte de su problema parece estar sucediendo porque está convirtiendo cadenas en fechas y las fechas se remontan a cadenas. Creo que podrías estar haciéndolo más de lo necesario.

Los formularios HTML realmente no "entienden" las fechas, solo "entienden" las cadenas. Así que está bien pasarles cadenas en lugar de fechas. En otras palabras, está bien eliminar el to_date .

<% form_for @search do |f| %>
    <%= f.label :start %>
    <%= f.select :due_at_after,
          ['November', '2009-11-01'],['December', '2009-12-01']],
          :include_blank => true
    %>
    <br/>
    <%= f.label :end %>
    <%= f.select :due_at_before,
          [['December', '2009-12-01'],['January', '2010-01-01']],
          :include_blank => true
    %>
    <%= f.submit 'Search' %>
<% end %>

Además, prefiero usar :include_blank => true en lugar de [['','']] (más legible por humanos, en mi opinión), y usé un <br/> cerrado etiqueta (cosas html estándar, ¿quizás cometiste un error tipográfico?).

Por cierto, si desea especificar una Fecha, puede usar un constructor de Fecha. Es más corto de escribir y más rápido de ejecutar que crear una cadena y analizar una fecha a partir de ella.

#Date(2009,11,1) is faster, shorter, and equivalent
Date(2009,11,1) == '2009-11-01'.to_date # --> true