2012-02-16 17 views
1

指定した日付範囲内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) 

私はいつもdate/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| %> 

答えて

1

を「範囲」機能が渡されているハッシュを、サポートしていないため、この場合:

1.9.3-p0 :008 > {:year => 2012, :month => 11, :day => 1}..{:year => 2012, :month => 12, :day => 1} 
ArgumentError: bad value for range 

代わりにあなたが範囲の開始と終了を確認する必要がありは、DateTimeのオブジェクトで:だから

1.9.3-p0 :010 > DateTime.new(2012,11,1)..DateTime.new(2012,12,1) 
=> Thu, 01 Nov 2012 00:00:00 +0000..Sat, 01 Dec 2012 00:00:00 +0000 

start_params = params[:start_date] 
start_date = DateTime.new(start_params["year"].to_i, start_params["month"].to_i, start_params["day"].to_i) 

end_dateも同じです。

+0

返信いただきありがとうございます。日時計は私を困惑させる。私はあなたの修正を試みたが、受け取った:ArgumentError(0との文字列の比較に失敗した)私はまた試みた:start_date = params [:start_date] .values_at(:month、:day、:year)... any thoughts?再度、感謝します。 :) –

+0

オリジナルの応答を編集する:各パラメータを文字列からto_iの整数に変換する必要があります。 – bdon

+0

近くに、感謝しています...今、別のエラーが発生しましたが、私はそれを処理することができます。 : –

関連する問題