[RUBY] Définitions autres que les sept actions de base dans Rails

Revue des actions de base

Vous trouverez ci-dessous les actions Rails standard スクリーンショット 2020-05-16 15.12.28.png

Définissez vous-même l'action

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).

Exemple d'utilisation

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

Définitions autres que les sept actions de base dans Rails
Définir autre chose que l'ID pour le routage Rails
[rails] Liste des actions définies dans Controller
Group_by dans Rails
Philosophie de base des rails
Association de modèles dans Rails
Ajout de colonnes dans les rails
Désactiver les turbolinks dans les rails
^, $ dans l'expression régulière Rails
Utiliser des images avec des rails
Comprendre la migration dans les rails
Diviser routes.rb dans Rails6
Markdown implémenté dans Rails
Utiliser la fonction de modèle de rails (ERB) autre que le contrôleur (vue Action)