Je veux rechercher même les colonnes du modèle liées (imbriquées) à un modèle
Plus précisément, je voudrais rechercher non seulement le nom du magasin de vêtements d'occasion, mais également le nom de la zone (un-à-plusieurs) et le nom de la marque (plusieurs-à-plusieurs).
** Spécifiez nom de modèle associé_ nom de colonne de modèle lié
comme nom d'élément de la balise de formulaire **
to 1
(appartient_to: hoge, et has_one: fuga)Par exemple, lorsque vous souhaitez utiliser le nom de zone du modèle de zone associé au modèle de magasin comme condition de recherche.
= f. Aide de formulaire: Soit
nom de l'élément du nom de l'élément
ʻarea_name_cont`.
Une fois démonté zone → Nom du modèle associé name → Nom de colonne du modèle associé cont → Prédicat qui spécifie une correspondance partielle
Ce sera.
= search_form_for(@q, url: shop_search_path) do |f|
= f.text_field :area_name_cont
#Nom de zone du modèle de zone associé au modèle de magasin(name)
trop nombreux
(has_many: hoges, etc.)Par exemple, lorsque vous souhaitez utiliser le nom de marque du modèle de marques associé au modèle de boutique comme condition de recherche.
= f. Aide de formulaire: Soit
nom d'élément du nom d'élément`` nom_marques_cont
.
Une fois démonté marques → nom du modèle associé name → Nom de colonne du modèle associé cont → Prédicat qui spécifie une correspondance partielle
Ce sera.
= search_form_for(@q, url: shop_search_path) do |f|
= f.text_field :brands_name_or_genres_name_cont
#Nom de marque du modèle de marque associé au modèle de boutique(name)
#Nom de genre du modèle de genre associé au modèle de boutique(name)
#* Notez que lorsqu'il y a plusieurs modèles liés, le nom du modèle sera au pluriel.
À propos, vous pouvez rechercher plusieurs colonnes en connectant les noms de colonnes avec _or_
etc.
Pour l'utilisation réelle de ransack, veuillez vous référer à des articles tels que [Rails] Résumé des différentes méthodes de création de formulaire de recherche utilisant ransack.
shop.rb
#modèle de magasin
belongs_to :area, optional: true
has_many :shop_genres
has_many :shop_brands
has_many :genres, through: :shop_genres
has_many :brands, through: :shop_brands
area.rb
#modèle de zone
has_many :shops
brand.rb
#Modèle de marque
has_many :shop_brands
has_many :shops, through: :shop_brands
shop_brand.rb
# shop_Modèle de marque
belongs_to :shop
belongs_to :brand
shop_genre.rb
# shop_modèle de genre
belongs_to :shop
belongs_to :genre
Il est pratique d'utiliser une méthode appelée ransackable_associations
.
** 1. rails c ** dans le répertoire de l'application
terminal
#Exécutez dans le répertoire d'application approprié
$ rails c
Running via Spring preloader in process 61541
Loading development environment (Rails 5.0.7.2)
[1] pry(main)>
** 2. Exécutez model name.ransackable_associations
**
terminal
#Cette fois, je veux étudier la relation avec le modèle Shop, donc Shop.ransackable_Si vous dites associations
Le modèle associé au modèle Shop s'affiche
[1] pry(main)> Shop.ransackable_associations
=> ["user", "area", "shop_genres", "shop_brands", "genres", "brands"]
[2] pry(main)>
[73 recettes pour créer facilement un formulaire de recherche avec Ransack -026 associé](http://nekorails.hatenablog.com/entry/2017/05/31/173925#026-%E9%96%A2%E9%80% A3) Comment rechercher plusieurs colonnes dans les tables parent et enfant avec Ransack
Recommended Posts