Как добавить проверку, если поиск пуст? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь добавить функцию поиска в мое приложение ruby ​​on rails.Поиск работает нормально, но как я могу добавить проверку, чтобы она отображалась, когда поиск пуст?

index.html.erb:

<%= form_tag topics_path, :method => 'get' do %>
  <%= text_field_tag :search, params[:search], required: true %>
  <%= submit_tag "Search" %>   
<% end %

themes_controller:

def index
@topics = Topic.search(params[:search]).paginate(:page => params[:page], :per_page => 5)
end

themes.rb

def self.search(search)
        if search 
            where(["title LIKE ?","%#{search}%"])
        else
        all 
    end

Я ожидаю, что результат будет: 1. Найдите конкретную тему 2. В этом поле нет тем, поэтому отображается проверка, например «ничего не найдено, повторите попытку»

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вы можете добавить флэш-сообщение в контроллер:

flash[:notice] = "No result found"

Ваш контроллер должен быть похож на:

def index
    @topics = Topic.search(params[:search]).paginate(:page => params[:page], :per_page => 5)
    if @topics.present?
         flash[:success] = "Any message!"
          //redirection
    else
          flash[:success] = "No result found"
           //redirection
    end
end

Для реализации флеш-сообщения. Пожалуйста, смотрите ссылку: https://stackoverflow.com/a/55590536/11094356

0 голосов
/ 09 апреля 2019

просто обновите код в контроллере, как показано ниже, так что вы получите необходимые записи, когда поиск присутствует, или все записи, если параметры поиска отсутствуют.

def index
 if params[:search].present?
   @topics = Topic.search(params[:search]).paginate(:page => params[:page], :per_page => 5)
   flash[:notice] = "No records found based on the search." if @topics.blank?
 else
   @topics = Topic.all
   flash[:notice] = "No records found in Database." if @topics.blank?
 end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...