Een groot deel van uw probleem lijkt te gebeuren omdat u tekenreeksen omzet in datums en dateert uit tekenreeksen. Ik denk dat je het misschien meer doet dan nodig is.
HTML-formulieren "begrijpen" datums niet echt - ze "begrijpen" alleen strings. Het is dus oké om ze strings door te geven in plaats van datums. Met andere woorden, het is oké om de to_date
. te verwijderen .
<% 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 %>
Ik gebruik ook liever :include_blank => true
in plaats van [['','']]
(naar mijn mening beter leesbaar voor mensen), en ik gebruikte een gesloten <br/>
tag (standaard html-dingen - misschien heb je een typfout gemaakt?).
Trouwens, als u een datum wilt specificeren, kunt u een datumconstructor gebruiken. Het is korter om te schrijven en sneller uit te voeren dan het maken van een string en het ontleden van een datum.
#Date(2009,11,1) is faster, shorter, and equivalent
Date(2009,11,1) == '2009-11-01'.to_date # --> true