Форма поиска (Ransack gem)
Мне удалось получить форму поиска для работы на моем сайте "Фондовые биржевые акции" ( http://www.bargainstockfunds.com/), основываясь на примере по адресу http://railscasts.com/episodes/370-ransack. С помощью нескольких модификаций (продукт-> фонд, продукт-> фонд, продукты-> фонды) я смог заставить его работать.
В примере приложения по умолчанию отображаются ВСЕ записи из таблицы базы данных. Для моего конкретного приложения это НЕ приемлемый вариант, потому что он покрывает более 10000 фондовых фондов, и загрузка их всех на страницу занимает FAR слишком много времени.
Как получить форму поиска для отображения записей ТОЛЬКО, если количество записей меньше заданного числа? (Я имею в виду что-то вроде 200.) Если количество средств слишком велико, я хочу предоставить сообщение о чем-то вроде "Слишком много средств - пожалуйста, сузьте область поиска". Если количество средств равно 0, я хочу предоставить сообщение, в котором говорится что-то вроде "Нет средств - пожалуйста, расширьте свой поиск".
2 ответа
200 записей на странице все еще очень тихие, я надеюсь, что вы будете использовать гем will_paginate для управления этим, реализация довольно проста.
https://github.com/mislav/will_paginate/wiki
Если вы используете Ransack, вы можете вызвать такой метод.
def method
if @search.result.count >= 200
redirect_to root_path, notice: " Please narrow your search"
elsif @search.result.count == 0
redirect_to root_path, notice: "0 search results returned"
else
true
end
Если вы хотите запретить загрузку слишком многих, вы всегда можете вызвать метод.limit(x) для @search.result.
Надеюсь, это поможет.
Мне удалось заставить мою форму поиска работать быстро, используя драгоценный камень Kaminari для разбиения на страницы результатов. Я попробовал will_paginate, но не смог заставить его работать на меня. Полагаю, я мог бы остаться с драгоценным камнем will_paginate, но Railscast освещал Kaminari совсем недавно, а не will_paginate. Учитывая, насколько привередливыми могут быть Ruby on Rails и насколько устаревшими могут быть детали старых процедур, я решил использовать Kaminari.