Dans Ransack, je vais résumer comment utiliser la boîte de sélection.
Tout d'abord, j'expliquerai l'assistant select
pour créer une boîte de sélection.
select(objet,Nom de la propriété,Informations sur les éléments,option,Attribut d'élément)
<%= f.select :name, [['sample1', 1], ['sample2', 2], ['sample3', 3]],
{include_blank: 'Pas de choix'}, class: 'sample' %>
(En supposant qu'il soit au format form_for, il ne contient pas d'objet.)
De cette façon, si vous mettez un tableau dans le troisième argument, la valeur 1 ou 2 sera envoyée comme paramètre
.
Il existe également un «assistant utile» pour personnaliser davantage la boîte de sélection.
options_for_select
Utilisez ʻoptions_for_select pour définir la
valeur initiale de la boîte de sélection`.
options_for_select(Tableau/hacher,option)
<%= f.select :name, options_for_select({sample1: 1, sample2: 2, sample3: 3}, 1),
include_blank: true %>
Puisque "1" est inclus dans le deuxième argument de options_for_select, `1 est affiché comme valeur par défaut. ''
options_from_collection_for_select
Lorsque vous souhaitez créer des choix à partir d'un modèle, il est pratique d'utiliser ʻoptions_from_collection_for_select`.
options_from_collection_for_select(Tableau d'objets,attribut de valeur,élément de texte,option])
<%= f.select :name, options_from_collection_for_select(User.all, :id, :name , 1) %>
Désormais, vous pouvez automatiquement faire du nom dans le modèle utilisateur une zone de sélection.
Utilisez ʻoptions_from_collection_for_select` comme exemple.
<%= search_form_for(@q, url: users_path, local: true) do |f| %>
<%= f.select :name_eq, options_from_collection_for_select(User.all, :id, :name , 1) %>
<%= f.button 'Rechercher' %>
<% end %>
En faisant ce qui précède, vous pouvez effectuer une recherche en utilisant le nom dans le modèle utilisateur comme zone de sélection. De plus, la valeur initiale est définie en option.
La partie _eq
de name_eq
est appelée matcher
et vous pouvez rechercher des valeurs égales.
Il y a aussi les matchers suivants.
matcher | sens |
---|---|
_eq | égal |
noteq | Inégal |
_cont | Y compris la valeur(LIKE) |
_iteq | Moins que |
_gteq | c'est tout |
Pour plus de détails, consultez la section «Rechercher des correspondants» sur ici.
https://railsguides.jp/form_helpers.html https://shinmedia20.com/rails-select-box
Recommended Posts