Je voudrais expliquer le ** contrôleur ** de l'application Rails.
** "Connaître le modèle MVC" ** ・ ** "À propos du rôle du contrôleur" ** ・ ** "Utilisation pratique" **
C'est l'une des idées pour bien gérer le code lors de la création d'une application. C'est juste une façon de penser, donc ce n'est pas tout à fait correct. Les applications Rails intègrent ce framework MVC.
** "Modèle Vue Contrôleur" **.
・ Model
・ ・ ・ Responsable de la logique métier dans le système
・ View
・ ・ ・ Traitement tel que l'affichage et l'entrée / sortie
・ Controller
・ ・ ・ Contrôle le modèle et la vue en fonction de l'entrée de l'utilisateur
** "Controller" ** reçoit la demande du client
Pour ** "Controller" **, demandez à ** "Model" ** de traiter les données.
** "Model" ** traite les données de la base de données et renvoie les données au ** "Controller" **
** "Controller" ** vous demande de traiter les données reçues dans ** "View" **
** "View" ** crée un formulaire (document HTML) que le client peut voir et le renvoie à ** "Controller" **
** "Controller" ** renvoie le texte HTML au client en tant que réponse
En répétant 1 à 6, il est établi comme une application Web.
** Conclusion ** -Exécutez la ** méthode d'action ** du contrôleur spécifié en fonction des informations envoyées depuis le routage. ・ ** Lien avec modèle / vue ** pour renvoyer une réponse au client
Cette méthode décrit le contenu de traitement spécifique de l'action spécifiée par le routage.
Image de la méthode d'action
class SamplesController < ApplicationController
def index
#Contenu de traitement spécifique
......
......
end
end
Dans cet exemple ...
Lorsque l'action d'index du contrôleur d'échantillons est spécifiée dans le routage, décrivez la méthode d'action à exécuter sous la forme de def index ... end
.
Créer, modifier ou récupérer une base de données via un modèle.
Instruisez le modèle à l'aide des méthodes de la classe ActiveRecord dont le modèle hérite. Voici quelques exemples de méthodes.
Méthode | Contenu |
---|---|
all | Récupérez toutes les données de la base de données |
find | Obtenez un élément de données dans la base de données |
new | Générer une nouvelle création de données |
save | Enregistrer les données dans la base de données |
Image de la méthode
(Nom de la classe de modèle).[Méthode]
Sample.all
Passer les données reçues du modèle à la vue et créer les données de réponse à renvoyer au client.
Attribuez des variables d'instance aux données du modèle.
@samples = Sample.all
Cela rend les données disponibles dans le fichier de vue.
Dans le répertoire ʻapp / controllers Définissez le fichier
controller name_controller.rb`.
Fondamentalement, il devrait être ** "pluriel" **. La raison en est qu'il devine automatiquement les fichiers utilisés par Rails par leur nom. Même s'il peut être au singulier, le développeur doit explicitement écrire le code ou cela provoquera une erreur inattendue.
Nom | Exemple | Remarques |
---|---|---|
Nom du contrôleur | samples | |
Nom de la classe du contrôleur | SamplesController | Affaire de chameau |
Nom du fichier du contrôleur | samples_controller.rb | Cas de serpent |
Le contenu du fichier du contrôleur ressemble à ceci.
app/controllers/samples_controller.rb
class SamplesController < ApplicationController
def index
#Contenu de traitement spécifique
......
......
end
end
Le fichier de contrôleur créé hérite de la ** "classe ApplicationController" **.
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
end
ʻLa classe définie dans le fichier app / controllers / application_controller.rb`. C'est une classe (presque) vide qui hérite juste de la ** ActionController :: Base class **.
En principe, chaque contrôleur hérite de la classe ApplicationController. Il est utilisé lorsque des fonctions communes à toutes les applications (connexion / déconnexion, etc.) sont requises.
Une classe qui fournit les fonctionnalités de base du contrôleur. Il est responsable de la partie de base liée au traitement des demandes / réponses.
Le contrôleur obtient les paramètres de la requête HTTP du client via ** "params method" **.
Rails traite implicitement les ** paramètres de requête ** et stocke les données dans des paramètres au format de hachage. Il n'y a aucune différence dans la façon de recevoir des données même lors de l'accès par ** demande GET / demande POST **.
Accédez au serveur Web en incluant le paramètre dans ** "Request URI" ** de la ligne de requête de la requête HTTP. Vous pouvez transmettre des paramètres au ** "format URL" ** et au ** "format de requête" **.
Lorsque les paramètres de routage suivants sont définis
Prefix Verb URI Pattern Controller#Action
user GET /users/:id(.:format) users#show
Si vous accédez avec l'URL http: // sample.com / users / 7
Le paramètre «: id» de la requête signifie «7»
Dans Rails, il est stocké dans params et la valeur de params [: id]
est " 7 "
.
app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
params[:id] # "7"
end
end
À la fin de l'URL, écrivez "?" Suivi de "nom du paramètre = valeur".
S'il y a plusieurs paramètres, connectez-les avec "&" pour les décrire.
En utilisant le même routage dans l'exemple ci-dessus
Lorsque vous accédez avec l'URL http: //sample.com/users/7? Keyword = query & num = 10
La valeur de params [: mot-clé]
est " query "
, et params [: num]
est " 10 "
.
app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
params[:keyword] # "query"
params[:num] # "10"
end
end
Il s'agit d'une demande qui se produit lorsque le client appuie sur le bouton «Soumettre» lors de la saisie à partir du formulaire. Accédez au serveur Web en incluant les paramètres dans le ** "body" ** de la requête HTTP.
Vous pouvez également envoyer plus de paramètres qu'une requête GET.
Lors de la sauvegarde des "paramètres" dans la base de données, utilisez un mécanisme appelé ** "Strong Parameters" **.
C'est un mécanisme pour éliminer la vulnérabilité de "Mass Assignment" qui était utilisée jusqu'à la série Rails3. Dans "Mass Assignment", les informations des paramètres liés à la sauvegarde ont été décrites dans ** model **. Dans "Paramètres forts", décrivez les informations des paramètres à enregistrer dans ** Controller **.
Strong_Image des paramètres
class UsersController < ApplicationController
def create
@user = User.new(user_params) # user_Créer de nouvelles données à l'aide de la méthode params
@user.save #Enregistrer dans la base de données via le modèle
end
#Les paramètres forts ne sont pas appelés depuis l'extérieur de la classe, donc écrivez-les dans une méthode privée.
private
def user_params
params.require(:user).permit(:name, :age)
end
end
Dans cet exemple
Dans la méthode ʻuser_params, les paramètres à enregistrer sont spécifiés dans
: nameet
: age of
: user`.
Spécifiez le nom de la table à enregistrer dans la base de données.
Spécifie le nom de la colonne à enregistrer dans la table de base de données.
C'est tout pour l'explication du contrôleur. Merci beaucoup.
Recommended Posts