Как отобразить два разных объекта в поиске? - PullRequest
0 голосов
/ 08 апреля 2010

github url

Я использую простой поиск, который отображает результаты поиска:

@adds = Add.search(params[:search])

В дополнение к результатам поиска я пытаюсь использовать метод nearbys (), который отображает объекты, которые находятся близко к результату поиска. Следующий метод отображает объекты, близкие к 2, но не отображает объект 2. Как отобразить объект 2 в сочетании с соседними объектами?

@adds = Add.find(2).nearbys(10)

Хотя приведенный выше код функционирует, когда я использую поиск, @adds = Add.search(params[:search]).nearbys(10) ошибка метода не возвращается, undefined method nearbys 'для массива: 0x30c3278`

Как я могу найти модель для объекта И использовать метод nearbys () И отобразить все возвращенные результаты?

Модель

def self.search(search)
    if search
      find(:all, :conditions => ['address LIKE ?', "%#{search}%"])
      # where('address LIKE ?', "%#{search}")
    else
      find(:all)
    end
  end

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Когда вы находите (2), возвращается объект модели, но если вы находите (: все), и возвращается массив.

Метод nearbys будет работать только с экземпляром модельного объекта. Что если ваш метод поиска возвращает массив из 10 адресов? Вы не можете просто вызывать рядом массив, вы должны циклически проходить через ваш массив и применять рядом каждый адрес, указанный в цикле.

0 голосов
/ 08 апреля 2010

Не видя ближайшего метода, я могу сказать, что это идеальный вариант использования для scoped:

def self.search(term)
  if term
    scoped({ :conditions => ["address LIKE ?", term] })
  else
    scoped({})
  end
end

Если nearby определено в классе, как я думаю, оно будет использоваться следующим образом:

Model.search("pizza").nearby

И , что - это то, как вы можете охватывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...