Savez-vous quelle est la différence entre la redirection et le rendu? Si vous êtes un débutant en Rails, vous ne le comprendrez peut-être pas, alors je vais vous l'expliquer brièvement.
La différence est ** si elle passe par le contrôleur **. J'écrirai le déroulement de chaque processus.
■ redirect Envoyer une demande → Identifier les contrôleurs et les actions par routage → L'action dans le contrôleur spécifié fonctionne → Le fichier de vue correspondant à l'action qui a été effectuée s'affiche en tant que réponse.
■ render Afficher le fichier de vue spécifié
À titre d'exemple que vous voyez souvent, lorsque vous enregistrez les données publiées, vous pouvez utiliser la redirection si l'enregistrement est réussi et le rendu si l'enregistrement échoue. Expliquons un peu avec un exemple de code.
post_controller
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to root_path
else
render "new"
end
end
Voyons le mouvement réel dans la vidéo Cette fois, nous l'avons validé afin qu'il ne puisse être enregistré que si vous saisissez 5 caractères ou plus.
Vous pouvez facilement comprendre que lorsque la sauvegarde est réussie, il vous suffit de vous déplacer vers le chemin racine (liste des données publiées). Si la sauvegarde échoue, le rendu lira directement le nouveau fichier de vue. À ce stade, puisqu'elle ne passe pas par le contrôleur, la variable d'instance (@post) passée au fichier de vue n'est pas celle utilisée dans la nouvelle action, mais celle utilisée dans ** l'action de création ** (les données de publication sont stockées). En faisant cela, lorsque le nouveau fichier de vue est affiché après l'échec de la sauvegarde, il ** conservera les données d'entrée **. Si vous utilisez la redirection lorsque l'enregistrement échoue, la nouvelle action sera chargée et @post recevra une instance vide nouvellement créée, de sorte que les données que vous avez entrées seront perdues.
En plus de cette utilisation, le rendu est une méthode très pratique qui peut être utilisée comme modèle partiel ou pour un traitement itératif. Si vous pouvez bien l'utiliser, vous apprécierez le codage, c'est donc une bonne idée de vous en souvenir.
Merci d'avoir regardé jusqu'au bout!
Recommended Posts