Hallo,
Diesmal Gem, der die Suchfunktion mit explosiver Geschwindigkeit implementieren kann
Ransack ist.
Nein, das ist wirklich praktisch. Die Suchfunktion ist zufällig hoch, nicht wahr? Ich dachte, Mit diesem Edelstein können Sie es in etwa 30 Minuten tun.
Es fühlt sich an, als wäre Gem wieder erstaunlich. (Wortschatz)
Lass es uns jetzt machen
gem 'ransack'
In der Gemfile.
% bundle install
Vergiss nicht
Gehen Sie routen
resources :books do
collection do
get 'search'
end
end
Routing ist
search_books GET /books/search(.:format) books#search
Ich fühle mich so.
Es gibt ein Mitglied, das der Sammlung ähnlich ist
member do
get 'search'
end
Ermöglicht das Einfügen der ID in das Routing
search_books GET /books/:id/search(.:format) books#search
Diesmal habe ich dies getan, weil ich die Spalte tag_name in der Buchdatenbank durchsuchen möchte.
Als nächstes werden wir eine Ansicht machen
rails g controller books search
Dadurch wird ein Controller erstellt und die Ansicht durchsucht.
Controller Controller ♪
books_controller.rb
class BooksController < ApplicationController
before_action :search_book, only: [:index, :search]
def index
@books =Book.all
@book =Book.includes(:user)
set_book_column
end
def search
@results = @p.result
@book = @results.includes(:book)
end
private
def search_book
@p = Book.ransack(params[:q])
end
def set_book_column
@book_name = Book.select("tag_name").distinct
end
end
Es ist so.
Book.select("tag_name").distinct
Setzen Sie das zu suchende Element anstelle von tag_name ein
books/index.html.reb
<%= search_form_for @p, url: search_books_path do |f| %>
<%= f.label :tag_name_cont, 'Verlinke den Namen' %>
<%= f.text_field :tag_name_cont, placeholder: "Suche nach Tag-Namen" %>
<br>
<%= f.submit 'Suche' %>
<% end %>
Die search_form_for-Methode ist eine Lansac-spezifische Methode
Der Inhalt von tag_name_cont in der zweiten Zeile lautet Wenn es übereinstimmt, wird es bei der Suche abgefangen.
Das ist der eine.
Wenn Sie es auf Gl. Setzen, wird nur genau das gleiche gefangen.
Es gibt mehrere andere, also schauen Sie mal rein! Ransack-Empfehlung
Erstellen Sie einen Suchergebnisbildschirm
books/search.html.erb
<h1 class="search-forms">
Suchergebnisse
</h1>
<head class ="search-book-list">
<div class="book-chosen">
<%#Suche Anwendbare Produktliste%>
<% if @results.length !=0 %>
<% @results.each do |result| %>
<br>
<div class="sec1title">
<div class="item-show">
<h2 class='border01'>
<%= result.genre.type %>
<%= link_to "/books/#{result.id}" do %>
<%end %>
</h2>
<%= image_tag result.image, id: 'slideshow' if result.image.attached? %>
<div class="item-info" >
<h2 id ='item-name'>
<%= result.name %>
</h2>
<form class="item-content-show">
<%= result.content %>
</form>
</div>
<br />
</div>
</div>
<% end %>
<% else %>
<br/>
Es gibt kein anwendbares Produkt
<br/>
<br/>
<div>
<%=link_to "nachhause kommen",root_path%>
</div>
<% end %>
<br>
</div>
<%#Home "Button%>
<%= render "shared/sidebar" %>
</head>
dekita!:relaxed:
Mit dem Controller
def search
@results = @p.result
@book = @results.includes(:book)
end
Da es so geschrieben ist, von @result Ich nehme den Wert heraus.
Fühlen Sie sich frei zu kommentieren, wenn Sie Fehler machen! !!
Recommended Posts