[RUBY] [Rails] Quelle est la différence entre la redirection et le rendu?

introduction

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.

C'est la différence

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é

Comment l'utiliser correctement?

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

81311fb1ec11688f69985b41a2984bc0.gif

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.

finalement

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

[Rails] Quelle est la différence entre la redirection et le rendu?
[Rails] Quelle est la différence entre l'installation et la mise à jour du bundle?
Quelle est la différence entre SimpleDateFormat et DateTimeFormatter? ??
Quelle est la différence entre System Spec et Feature Spec?
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Quelle est la différence entre ignorer et en attente? [RSpec]
[rails] Différence entre redirect_to et render
Quelle est la différence entre une action et une méthode d'instance?
[Rails] Différence entre redirect_to et render [Débutant]
Quelle est la différence entre un serveur Web et un serveur d'applications?
[Java] Quelle est la différence entre form, entity et dto? [Haricot]
[Rails / Active Record] À propos de la différence entre créer et créer!
Différence entre redirect_to et render
Différence entre redirect_to et render
Différence entre render et redirect_to
Différence entre render et redirect_to
[Rails] J'ai étudié la différence entre les ressources et les ressources
[Rails] Différence entre find et find_by
À propos de la différence entre irb et pry
[Rails] J'ai étudié la différence entre une nouvelle méthode, une méthode de sauvegarde, une méthode de construction et une méthode de création.
[Java] Comprendre la différence entre List et Set
[iOS] Comprendre la différence entre le cadre et les limites
Comprenez la différence entre les classes abstraites et les interfaces!
Différence entre le membre et la collection de rails routes.rb
[Rails] Différence entre la méthode de création et la méthode nouvelle + sauvegarde
Différence entre vh et%
Différence entre i ++ et ++ i
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
[Rails] Afficher le message d'erreur - Différence entre render et redirect_to, flash-
Différences entre les classes et les instances dans Ruby
Comparez la différence entre dockerfile avant et après docker-slim
[Swift] UITextField m'a appris la différence entre nil et ""
Existe-t-il une différence de performances entre Oracle JDK et OpenJDK à la fin de 2017?
Différence entre produit et variante
Quelle est la méthode pluck?
[Java] Différence entre == et égal
Qu'est-ce que la classe BufferedReader?
Les rails sont difficiles et douloureux!
Différence entre les variables et les variables d'instance
Différence entre mockito-core et mockito-all
Les rails sont difficiles et douloureux! Ⅱ
Différence entre classe et instance
Différence entre l'installation de bundle et de bundle
Différence entre ArrayList et LinkedList
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
A quoi sert le constructeur?
Différence entre StringBuilder et StringBuffer
Qu'est-ce que les microservices et les frameworks de microservices