如何使用 rails 为 bootstrap 导航栏搜索表单声明路径

How can I declare path for bootstrap navbar search form using rails

我想在着陆页中搜索教科书,但它不起作用。 我必须去 /textbooks 页面然后我才能搜索。 另外,我想全文搜索。我正在使用太阳黑子和 solr。但全文搜索不起作用。如果我有一本教科书的书名叫"Algorithm"。 如果我搜索 "algo" 我想被搜索到。你能帮忙吗?

我有下面的代码。

views/layouts:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>
    <% if content_for? :title %>
        <%= yield :title %>
    <% else %>
        Udeal
    <% end %>
  </title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

  <%= csrf_meta_tags %>
</head>

<body>

<%= render 'partials/navbar' %>

<%= render 'partials/flash_notification' %>

<%= yield %>

</body>

</html>

config/routes.rb:

Rails.application.routes.draw do
  root 'home#index'
  get '/about', to: 'home#about'

  resources :textbooks
  get '/textbooks/search', to: 'textbooks#search'
  devise_for :users

_navbar.html.erb:

<form class="navbar-form navbar-left" role="search">
        <div class="form-group">
          <%= form_tag(textbooks_path, :method => "get", id: "search-form", html: {class: 'form-group'}) do %>
            <%= text_field_tag :search, params[:search], placeholder: "Search all deals", class: "form-control" %>
        </div>
            <%= submit_tag "Search", :class => 'btn btn-default',:title => nil%>
          <% end %>
      </form>

我的 TextbooksController:

class TextbooksController < ApplicationController
  before_action :set_textbook, only: [:show, :edit, :update, :destroy]

  def search
    @search = Textbook.search do
      keywords(params[:q])
    end
  end

  def index
    @textbooks = Textbook.all
    @search = Textbook.search do
      fulltext params[:search]
      #keywords params[:search]
    end
    @textbooks = @search.results
  end

教材型号:

class Textbook < ActiveRecord::Base
    belongs_to :user

    searchable do
        text :title, :default_boost => 2
        text :subject
    end

下面是我的 index.html.erb 教科书页面

<div>
          <%= form_tag textbooks_path, :method => :get do %>
            <p>
            <a style="color:#000000" title="Suggest!" data-toggle="popover" data-trigger="hover" data-content="Title or Subject">
              <%= text_field_tag :search, params[:search] %>
            </a>
            <%= submit_tag "Search", :title => nil, class: "btn btn-success btn-sm" %>
          <% end %>
        </div>

编辑:

我输入了佣金路线:

                  Prefix Verb   URI Pattern                    Controller#Action
                    root GET    /                              home#index
                   about GET    /about(.:format)               home#about
        search_textbooks GET    /textbooks/search(.:format)    textbooks#search
               textbooks GET    /textbooks(.:format)           textbooks#index
                         POST   /textbooks(.:format)           textbooks#create
            new_textbook GET    /textbooks/new(.:format)       textbooks#new
           edit_textbook GET    /textbooks/:id/edit(.:format)  textbooks#edit
                textbook GET    /textbooks/:id(.:format)       textbooks#show
                         PATCH  /textbooks/:id(.:format)       textbooks#update
                         PUT    /textbooks/:id(.:format)       textbooks#update
                         DELETE /textbooks/:id(.:format)       textbooks#destroy
        new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
            user_session POST   /users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
           user_password POST   /users/password(.:format)      devise/passwords#create
       new_user_password GET    /users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                         PATCH  /users/password(.:format)      devise/passwords#update
                         PUT    /users/password(.:format)      devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
       user_registration POST   /users(.:format)               devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)          devise/registrations#edit
                         PATCH  /users(.:format)               devise/registrations#update
                         PUT    /users(.:format)               devise/registrations#update
                         DELETE /users(.:format)               devise/registrations#destroy

_navbar.html.erb 将是:

<form class="navbar-form navbar-left" role="search">
        <div class="form-group">
          <%= form_tag(search_textbooks_path, :method => "get", html: {class: 'form-group', id: "search-form"}) do %>
            <%= text_field_tag :search, params[:search], placeholder: "Search all deals", class: "form-control" %>
        </div>
            <%= submit_tag "Search", :class => 'btn btn-default',:title => nil%>
          <% end %>
      </form>

之前您的表格 url 是错误的。如果您仍然遇到同样的问题,那么 post 您的 log 错误。

您的搜索方法是:

def search
    @search = Textbook.search do
       fulltext params[:search]
    end
    @textbooks = @search.results
  end