Я на Rails 3.1 и использую Ransack Gem . Вот что у меня в контроллере:
@q = Person.search(params[:q])
@people = @q.result
Вот что я считаю:
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_cont %>
<label>Family Name:</label>
<%= f.text_field :family_name_cont %>
<%= f.submit %>
<% end %>
Это хорошо работает и соответствует документации Ransack. Однако, если моя форма поиска не содержит никаких параметров (т.е. ничего не указано для поиска), она возвращает ALL записей. Я хочу, чтобы получилось НЕТ записей.
Мой Ruby довольно слабый, поэтому кто-то может показать мне, как правильно заставить @people возвращать пустой массив, если нет параметров [: q] или params [: q] не задает никаких критериев поиска (т. Е. Пользователь отправил пустая форма).
По сути, мой вопрос такой же, как и этот вопрос Metasearch на StackOverFlow , но решение, похоже, не работает для Ransack, так как он жалуется, что "search_attributes" не доступен.
Важно, чтобы он возвращал 0 записей без отправленных параметров и с пустыми отправленными параметрами. Любые заметки, объясняющие, почему ваш код работает, были бы полезны Спасибо.