如何使用 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
我想在着陆页中搜索教科书,但它不起作用。 我必须去 /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