2011-01-29 15 views
0

私は特定の日付範囲内で追加されたエントリを探してMySQLデータベースを照会するRailsコントローラ関数を書いています。たとえば、次のようなものがあります。Railsの日付の範囲で検索するにはどうすればよいですか?

@foos = FooTableModel.where(created > ? AND created <= ?', DateTime.new(2011, 1, 26), DateTime.new(2011, 1, 29)) 

このクエリは自分の目的に適しています。しかし、私がしたいのは、ユーザーが明示的に設定するのではなく、希望の日付範囲を設定できるようにすることです。私はerbファイルを多用していましたが、データへのアクセスに大成功を収めました。私は変更することに専念しています。何を表示する必要がありますか?

私が達成しようとしているのと同様の例がありますか?これはRailsの開発者がユーザーにできるようにしたいのですが、私は多くのリードを持っていません。

答えて

2

フォームコードはどこですか?ここで

は、標準のREST形式です:

<% form_tag(foo_path) do %> 
    <% select_date :start_date %> 
    <% select_date :end_date %> 
    <%= submit_tag "Submit", :disable_with => "Submitting..." %> 
<% end %> 

次に、あなたのコントローラ内で使用すると、これらの日付で検索するパラメーターを使用することができます。

start_date = params[:start_date] 
end_date = params[:end_date] 

foo_pathは安らかなルートにする必要があります。

def index 
    if params[:start_date] && params[:end_date] 
     start_date = params[:start_date] 
     end_date = params[:end_date] 
     @foos = Foo.find(:all, :conditions => ['created_at BETWEEN ? AND ?,' start_date, end_date 
    end 
    responds_to do |format| 
     format.html 
    end 
end 
+0

これは非常に有用であることを探しています:それはあなたがあなたのコントローラでは、ハッシュに{:controller => 'foo', :action => "find"}

を渡す必要があり、その後でない場合は、このような何かを行うことができます。私はこのコードを組み込みましたが、あなたが提供したビューコードの2行目に問題があります。未定義のメソッド 'day':start_date:Symbol これをもっと楽しくするためにモデルやコントローラに何かを追加する必要がありますか? – keybored

+0

ああ、私がそこに必要だったのは以下のように思えるでしょう。%% select_date Date.today、:prefix =>:start_date%> – keybored

+0

ありがとう、私はスクリプトで最後の問題を抱えていましたが、年/月/日付情報に間違ってアクセスする。あなたの助けをありがとう! – keybored