2011-11-13 8 views
0

私はこの2つのステートメントを組み合わせるのに苦労しています。私はイベントアプリに取り組んでいます。ユーザーがイベントを公開しないようにしたいと思います。それを行うために、私は "状態"と呼ばれる私のテーブルのフィールドを持っており、私もジオコーダーの宝石を使用しています。Railsコントローラー - 時間、状態、およびジオコーダーの宝石

def index 
if params[:search].present? 
    @events = Event.near(params[:search], 50, :order => :distance).where(:state => ['3', '4']) 
    else 
    @events = Event.where('until > ?', Time.zone.now) 
    end 
end 

あなたは、私が

def index 


if params[:search].present? 
    @events = Event.near(params[:search], 50, :order => :distance).where(:state => ['3', '4']) 
    else 
    @events = Event.where('until > ?', Time.zone.now, :state => ['3', '4']) 
    end 
end 

....これを実行したいと思いますが、私はあなたが助けてください

ActiveRecord::PreparedStatementInvalid in EventsController#index 

wrong number of bind variables (2 for 1) in: until > ? 

エラーが発生します.....

答えて

4

「?」というプレースホルダは1つしかありませんが、2つの引数を指定します。あなたは何ができる:

@events = Event.where('until > :time and state in :state', {:time => Time.zone.now, :state => ['3', '4']}) 

または

@events = Event.where('until > ?', Time.zone.now).where(:state => ['3', '4']) 

または

@events = Event.where(:until.gt => Time.zone.now, :state => ['3', '4']) 
+0

を私は第二1を使用しています、どうもありがとうございました。正常に動作します。すてきな一日を。 – Benjamin

関連する問題