Vous trouverez ci-dessous les actions Rails standard
Si vous souhaitez effectuer un traitement autre que les actions de base ci-dessus, vous pouvez le définir vous-même.
Vous pouvez utiliser ** collection ** et ** membre ** pour définir le routage à ce moment-là.
Rails.application.routes.draw do
resources :hoges do
collection do
Méthode HTTP'Nom de la méthode d'origine'
end
end
end
Rails.application.routes.draw do
resources :hoges do
member do
Méthode HTTP'Nom de la méthode d'origine'
end
end
end
La différence est de savoir si le routage généré a ** id ** ou non.
・ Collection →: Pas d'identifiant ・ Membre →: avec identifiant
Si vous avez besoin de passer à une page spécifique, c'est comme si vous utilisiez member.
Et l'important est de savoir où écrire le contenu de la méthode.
En général, même sur le site de développement, il semble qu'il soit habituel de décrire la méthode liée à l'interaction avec la table (DB) dans le modèle.
Par exemple, lorsque vous souhaitez implémenter une fonction de recherche, écrivez une méthode pour le faire dans le modèle et appelez-la avec le contrôleur (la description du formulaire de recherche de vue, etc. est omise).
routes.rb
resources :tweets do
collection do
get 'search'
end
end
tweet.rb
class Tweet < ApplicationRecord
#réduction
def self.search(search)
return Tweet.all unless search
Tweet.where('text LIKE(?)', "%#{search}%")
end
end
tweets_controller.rb
class TweetsController < ApplicationController
#réduction
def search
@tweets = Tweet.search(params[:keyword])
end
end
Pour expliquer chacun,
Commencez par configurer le routage de l'action de recherche. Je n'ai pas besoin d'accéder à la page de détails pour voir les résultats de la recherche, j'utilise donc la collection.
Lorsque l'utilisateur effectue une recherche sur le formulaire, le contrôleur appelle la méthode de recherche décrite dans le modèle à partir de l'action de recherche. À ce moment-là, le résultat de la recherche est passé en argument (params [: mot-clé])
Le résultat de la recherche est affecté à la recherche de variable dans la méthode de recherche du modèle et peut être utilisé dans la méthode.
Quant au contenu du processus, si le contenu de la recherche est vide, toutes les publications sont acquises, et s'il y a une valeur, les publications qui correspondent à l'expression conditionnelle dans le contenu de la méthode where sont acquises.
Recommended Posts