繁体   English   中英

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

[英]How to use elasticsearch/searchkick to run a search bar on my navbar and show results in a specific page?

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

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
@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="<%= @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 books_path, method: :get do %>
                <%= text_field_tag :q, nil, placeholder: "Search..." %>
            <% end %>
        </li>         
      </ul>
</div>
</nav>
</body>

经过反复研究,研究和破解,但最终使其能够正常工作。 如果其他人有类似的问题,我在下面概述了对我有用的方法。

三个步骤

  1. 在您的路线文件中添加帖子,以便用户可以转到搜索结果页面。

发布'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| %><div><h3><%= link_to booksearch.title, booksearch %></h3></div> <% end %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM