Ruby on rails Rails控制器-时间、条件和地理编码器Gem

Ruby on rails Rails控制器-时间、条件和地理编码器Gem,ruby-on-rails,controller,ruby-on-rails-3.1,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 =

我正在努力合并这两种说法。我正在开发一个事件应用程序。我想阻止我的用户自己发布事件。为了做到这一点,我在我的表中有一个名为“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 > ?

您能帮个忙吗?…

您只有一个占位符“?”,但您提供了两个参数。你可以做:

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


您只有一个占位符“?”,但提供了两个参数。你可以做:

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


非常感谢,我用的是第二个。很好。祝你度过愉快的一天。非常感谢,我正在使用第二个。很好。祝你有美好的一天。
@events = Event.where(:until.gt => Time.zone.now, :state => ['3', '4'])