Я использую 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. Однако, если моя форма поиска не содержит никаких параметров (т.е. ничего не указано для поиска), она возвращает ВСЕ записи. Я хочу, чтобы НИКАКИЕ записи не возвращались.
Мой Ruby довольно слаб, поэтому может кто-нибудь показать мне, как правильно заставить @people возвращать пустой массив, если нет params[:q] или params[:q] не указывает никаких критериев поиска (т.е. пользователь отправил пустую форму) .
По сути мой вопрос такой же, как этот Поиск вопроса в StackOverFlow, но решение, похоже, не работает для Ransack, поскольку он жалуется, что "search_attributes" недоступен.
Важно, что он возвращает 0 записей без отправленных параметров и с отправленными пустыми параметрами. Будут полезны любые примечания, объясняющие, почему ваш код работает. Спасибо.