Возврат 0 записей метапоиска - PullRequest
0 голосов
/ 25 октября 2011

Я на 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 записей без отправленных параметров и с пустыми отправленными параметрами. Любые заметки, объясняющие, почему ваш код работает, были бы полезны Спасибо.

1 Ответ

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

Вы можете заменить код вашего контроллера на:

if !params[:q].blank?  # nil.blank? and [].blank? are true
  @q = Person.search(params[:q])
  @people = @q.result 
else
  @people = []
end
...