Попытка создать фильтр выбора, чтобы найти графики с coursedates в пределах заданного диапазона дат:Rails - Фильтрация по диапазону дат
AdminController:
def find_schedules
if params[:start_date] && params[:end_date]
start_date = params[:start_date]
end_date = params[:end_date]
@schedules = Schedule.find(:all, :conditions => {:coursedate => start_date..end_date})
redirect_to :action => 'find_results'
end
end
find_schedules Вид:
<% form_tag(find_schedules_path) do %>
<%= select_date Date.today, :prefix => :start_date %>
<%= select_date Date.today, :prefix => :end_date %>>
<%= submit_tag "Submit", :disable_with => "Submitting..." %>
<% end %>
Ошибка :
Processing AdminController#find_schedules (for ...) [POST]
Parameters: {"start_date"=>{"month"=>"3", "day"=>"23", "year"=>"2011"}, "commit"=>"Submit", "authenticity_token"=>"...", "end_date"=>{"month"=>"2", "day"=>"16", "year"=>"2012"}}
ArgumentError (bad value for range)
Кажется, у меня всегда были проблемы с датами/датами. coursedate - это поле datetime в таблице расписаний, если это имеет значение. Мне нужно только искать даты, а не раз. Мне нужно каким-то образом преобразовать тип данных из-за того, как он хранит mysql? Или ... что еще я делаю неправильно? Заранее спасибо за вашу помощь.
Подойдя ближе после помощи bdon, спасибо! Теперь я получаю неопределенную ошибку метод, но я должен быть в состоянии понять, что из:
ActionView::TemplateError (undefined method `each' for nil:NilClass) on line #26 of /admin/find_results.html.erb:
25: <tr class="<%= cycle('odd', 'even') %>">
26: <% @schedules.each do |schedule| %>
Большое спасибо за ваш ответ. Иногда мне плохо. Я попытался исправить, но получил: ArgumentError (сравнение String с 0 не удалось) Я также попытался: start_date = params [: start_date] .values_at (: month,: day,: year) ... любые мысли? Еще раз спасибо. :) –
Редактирование исходного ответа: вам нужно повернуть каждый из параметров из строк в целые числа с помощью to_i. – bdon
Подходите ближе, спасибо ... теперь получите еще одну ошибку, но я смогу работать через нее. :) –