我正在努力合并这两个陈述。我正在开发一个活动应用程序。我想阻止我的用户自己发布活动。为了做到这一点,我在我的表中有一个名为“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 > ?
你能帮忙.....
答案 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'])