导轨控制器 - 时间,条件和地理编码器宝石

时间:2011-11-13 22:02:25

标签: ruby-on-rails controller ruby-on-rails-3.1

我正在努力合并这两个陈述。我正在开发一个活动应用程序。我想阻止我的用户自己发布活动。为了做到这一点,我在我的表中有一个名为“State”的字段,我也在使用geocoder gem。

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 > ?

你能帮忙.....

1 个答案:

答案 0 :(得分:4)

你只有一个占位符'?',但你提供了两个参数。你可以这样做:

@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']) 
相关问题