如何使用elasticsearch / searchkick在我的导航栏上运行搜索栏并在特定页面中显示结果?

我刚刚完成了一些处理搜索的教程。 我想将我的搜索栏放在我的导航栏上,这样每当有人搜索结果时,我都会被带到我的书库文件夹中的search.html.erb(类似于SO的工作方式)。 我遇到了一个问题,每次我进行搜索时都被带到我的书页[ http:// localhost:3000 / books?utf8 =%E2%9C%93&q = travel] ,没有结果只显示我的标准索引显示我的所有书籍,但从未进入我的搜索结果页面。 我在下面列出了所有相关代码。 如果有人能帮助我的话会非常感激。 非常感谢你们!

Book.rb

class Book  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 @booksearches = Book.search(params.fetch(:q, "*")) 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="">   

通过反复试验进行了研究,但终于能够让它发挥作用。 如果其他人有类似的问题,我已经概述了下面对我有用的东西。

三个步骤

  1. 在post文件中添加post,以便用户可以转到搜索结果页面。

发布’books / search’=>’books#search’,如:’search_books’

2.在您的application.html.erb上调整您的form_tag,以便它可以正确指向您的搜索结果页面

<%= form_tag search_books_path do %> <%= text_field_tag :q, nil, placeholder: "Search..." %> <% end %>

  1. 在您的search.html.erb中,请务必列出您的搜索结果

<% @booksearches.each do |booksearch| %>

<%= link_to booksearch.title, booksearch %>

<% end %>