Сложные поисковые экраны в Рельс 3 - PullRequest
1 голос
/ 25 октября 2011

Мне нужно реализовать некоторые функции поиска в приложении Rails. Большинство вещей, которые я нашел, как правило, нацелены на простой текстовый поиск. Я пытаюсь реализовать что-то гораздо более конкретное. Разновидность функциональности, которую я ищу, заключается в следующем (из приложения C):

http://andyc.ac/query.gif

Форма просто отправляет данные, введенные пользователем. Поэтому мне нужно перевести строки типа «3..7» в условия SQL для метода where, например

TestLine.where( "test_int >= ? and test_int <= ?", MinInt, MaxInt )

Похоже, это то, что уже где-то существует. Точный ожидаемый формат не так уж важен, так как пользователи не делятся между приложениями Rails и C. Как это будет сделано?

Ответы [ 2 ]

1 голос
/ 25 октября 2011

FWIW конкретные функции, которые вы описываете, на самом деле поддерживаются напрямую. Ну, почти. От Документы :

В хэше может использоваться диапазон для использования оператора SQL BETWEEN:

Student.where(:grade => 9..12)

Конечно же, это вопрос перевода строки ввода пользователя в Range, который не очень сложен, например ::

def str_to_range str
  str =~ /(\d+)\.\.(\d+)/

  Range.new *$~.captures.map(&:to_i)
end

Вероятно, это будет иметь смысл в scope вашей модели. (Конечно, ярлык может быть просто eval '9..12', но eval ввод конечного пользователя - очень, очень плохая идея.)

1 голос
/ 25 октября 2011

Посмотрите на мыслящего сфинкса (http://freelancing -god.github.com / ts / en /). Это может сделать вашу задачу намного проще. Вы можете искать в этом: http://freelancing -god.github.com / ц / о / searching.html # основные

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