指定した期間内にデータを検索したいと考えています。私は、名前、場所、start_atとend_atの詳細を持つデータベースを持っています。私はコントローラのfindメソッドを定義して名前と会場を検索できます。以下は私のコントローラコードです。Ruby on Railsでどのように日付範囲を見つけることができますか?
def find
@events=Event.find(:all, :conditions=>["venue = ? OR name = ?", params[:search_string], params[:search_string]])
end
次に会場または名前が見つかります。しかし、このコードにstart_atを追加すると例外が返されます。データベースから関連する日付範囲を検索するにはどうすればよいですか?誰でも私を助けることができますか?私はpostgresqlとルビー1.8.7とレール2.3.8のバージョンを使用しています。
次のように文が正常に働いていた場合、私は
def find
if (params[:search_string])
@events=Event.find(:all, :conditions=>["venue = ? OR name = ?", params[:search_string], params[:search_string]])
else
@events= Event.all(:conditions => ["start_at >= ? AND end_at <= ?", params[:start_at], params[:end_at]])
end
end
が最初の...私のfindメソッドを変更しました。それ以外の部分は機能しません。例外はありません。データベースから日付関連のデータを取得することはありません。データを検索しないため、このif文を自分のコードに追加します。誰も私にこの2番目の部分を修正するのを助けることができますか?私は検索テキストボックスに日付を入力します。データは取得されません。
どのような例外がありますか?どのようにしてこのコードにstart_atを追加しましたか? – fl00r
start_atは日付変数です。これをdefとして追加します。 @ events = event.find(:all、:conditions => ["場所=?OR開始_ = ="、params [:search_string]、params [ :search_string] ,, params [:search_string]] end – Rosh
あなたの例のstart_atはDATEではなくSTRINGです。 – fl00r