1
試圖創建選擇一個過濾器來查找日程與給定的日期範圍內coursedates:導軌 - 按日期範圍過濾
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是日程安排表中的日期時間字段,如果有任何區別的話。我只需要搜索日期,而不是時間。因爲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(字符串與0比較失敗)我也試過:start_date = params [:start_date] .values_at(:month,:day,:year)...任何想法?再次感謝。 :) – 2012-02-16 21:28:22
編輯原始響應:您需要將每個參數從字符串轉換爲to_i的整數。 – bdon 2012-02-16 21:30:17
越來越近,謝謝......現在又犯了一個錯誤,但我應該可以通過它。 :) – 2012-02-16 21:41:24