Часть вашей проблемы происходит, потому что когда вы ищете пустую строку, ваша функция поиска возвращает всех ваших пользователей.
Итак, в вашем контроллере вы можете сделать:
def index
if params[:search]
empty_search = params[:search].keep_if {|k, val| !val.blank?}.empty?
else
empty_search = true
end
if empty_search
# no search was submitted, or search params are all blank
@search = ""
@users = []
else
# a search was submitted
@search = User.search(params[:search])
@users = @search.all
end
end
(не уверен насчет точной терминологии для условия, но, по сути, если вы передаете пустую строку или ничего, вам следует запустить фрагмент кода else)
По мнению, вы можете сделать:
<% if @search.blank? %>
Your search results here.
<% else %>
<% if @users.blank? %>
No results for you
<% else %>
<ul>
<% @users.each do |user| %>
<li class="box round">
<%= user.name %></br>
</li>
<% end %>
</ul>
<% end %>
</ul>
Будет ли это работать?