Rails Controller - время, состояние и Geocoder Gem - PullRequest
0 голосов
/ 14 ноября 2011

Я изо всех сил пытаюсь объединить эти два утверждения.Я работаю над приложением событий.Я бы хотел запретить пользователям самим публиковать события.Для этого у меня в таблице есть поле «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 Ответ

4 голосов
/ 14 ноября 2011

У вас есть только один заполнитель '?', Но вы предоставляете два аргумента.Вы можете сделать:

@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']) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...