J'ai lu et résumé par moi-même github à propos de ransack, qui est souvent utilisé pour implémenter des fonctions de recherche.
Ransack enables the creation of both simple and advanced search forms for your Ruby on Rails application (demo source code here).
ransack vous permet de créer des formulaires simples et avancés avec Ruby on Rails.
Première installation de ransack
gem 'ransack'
- The default param key for search params is now :q
2.form_for is now search_form_for
Actuellement, j'utilise search_form_for au lieu de form_for.
3.you will get your search results (an ActiveRecord::Relation in the case of the ActiveRecord adapter) via a call to Ransack#result.
Les résultats de la recherche peuvent être obtenus en appelant la méthode result.
Créons un contrôleur basé sur ce qui précède.
Paramètre de recherche: recherche à l'aide de q et Ensuite, j'ai obtenu le résultat par .result.
controller.rb
def index
@q = Person.ransack(params[:q])
@people = @q.result(distinct: true)
end
La vue ressemble à ceci: Il utilise l'assistant search_form_for et le paramètre de recherche q. search_field est le champ à rechercher.
form.html
<%= search_form_for @q do |f| %>
# Search if the name field contains...
<%= f.label :name_cont %>
<%= f.search_field :name_cont %>
# Search if an associated articles.title starts with...
<%= f.label :articles_title_start %>
<%= f.search_field :articles_title_start %>
# Attributes may be chained. Search multiple attributes for one value...
<%= f.label :name_or_description_or_email_or_articles_title_cont %>
<%= f.search_field :name_or_description_or_email_or_articles_title_cont %>
<%= f.submit %>
<% end %>
Dans l'exemple ci-dessus <% = f.search_field: name_cont%> Et ainsi de suite, _cont était écrit après le nom. Il recherche une correspondance partielle pour le nom. Qu'y a-t-il d'autre J'en ai énuméré quelques-uns.
méthode de récupération | sens |
---|---|
*_eq | égal |
*_not__eq | différent |
*_lt | Plus petite |
*_lteq | Moins que |
*_gt | Plus grand |
*_gteq | c'est tout |
*_cont | Match partiel |
*_start | *Commence par |
*_end | *terminer par |
Il y a encore plus de fonctions, mais aujourd'hui, dans un endroit comme celui-ci Ne vous lassez pas de lire l'anglais ...
** 78 jours pour devenir ingénieur à part entière **
Recommended Posts