J'ai été en mesure d'obtenir un champ de recherche de base fonctionnant parfaitement sur ma barre de navigation en utilisant elasticsearch/searchkick. À l'heure actuelle, la seule façon d'exécuter une requête est si un utilisateur tape et appuie ensuite sur . Entrez sur son clavier. Cependant, je voudrais également permettre à un utilisateur de taper sa requête puis de cliquer sur l'icône de recherche et d'exécuter la recherche. Si quelqu'un peut m'aider serait grandement apprécié, j'ai énuméré tout mon code pertinent ci-dessous.Comment autoriser un utilisateur à cliquer sur une icône de recherche afin d'exécuter sa requête de recherche à l'aide de elasticsearch/searchkick?
Book.rb
class Book < ApplicationRecord
has_many :likes, :counter_cache => true
has_many :users, through: :likes
searchkick
end
books_controller.rb
class BooksController < ApplicationController
before_action :authenticate_user!, only: [:new, :create]
before_action :set_book, only: [:show, :edit, :update, :destroy, :share]
def index
@books = Book.all
end
def search
query = params[:q].presence || "*"
@booksearches = Book.search(query)
end
private
def set_book
@book = Book.find(params[:id])
end
def book_params
params.require(:book).permit(:title, :author, :avatar)
end
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def search
@booksearches = Book.search(params.fetch(:q, "*"))
end
end
application.html.erb
<body style="background-color: #f5f8fa; padding-top: 70px;" class="<%= @body_class %>">
<nav class="navbar navbar-default navbar-fixed-top">
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li>
<%= form_tag search_books_path, id:"searchform" do %>
<%= text_field_tag :q, nil, placeholder: "Search..." %>
<i class="fa fa-search" aria-hidden="true"></i>
<% end %>
</li>
</ul>
</div>
</nav>
</body>