Rails <% = expression%> Pourquoi aucune erreur ne se produit lorsqu'il est vide

À propos de cet article

Article sur les rails pour débutants rédigé par des débutants pour les débutants

Je me demandais depuis longtemps.

J'avais l'intention de mettre une valeur dans la variable d'instance avec le contrôleur, mais en fait, elle était vide (néant) et c'était un mystère qu'aucune erreur ne se produise même si je passais cette variable à afficher.

Pourquoi l'erreur ne se produit-elle pas?

La raison est que lorsque ** <% = expression%> est affiché, la méthode to_s est appelée pour l'expression **.

Autrement dit, la sortie résultante est toujours automatiquement «<% = expression.to_s%>». La raison pour laquelle cette méthode peut être utilisée est que tous les objets Ruby ont une méthode to_s.

Lorsque la méthode to_s est appelée ( nil.to_s) pour une instance vide, ** des caractères vides sont affichés **. Je n'obtiens aucune erreur et rien ne s'affiche tel quel.

#controller
@name = nil

#view
<p><%= @name.to_s %>Monsieur.</p>

#production
#=>Monsieur.

Sommaire

Il est difficile de remarquer quand j'apprends parce qu'il n'y a pas d'erreurs, mais il semble plus facile de découvrir quel genre de problème se produit quand je comprends que "c'est ce qui se passe en coulisses". A partir de là, j'ai pensé à nouveau que je continuerais à étudier correctement.

Recommended Posts

Rails <% = expression%> Pourquoi aucune erreur ne se produit lorsqu'il est vide
[Rails] Solution lorsqu'une erreur de migration se produit dans agit-as-taggable-on
[Aucune erreur de méthode] Solution lorsqu'elle se produit dans la nouvelle action
Erreur lors de l'utilisation des rails capybara
Un rappel lorsqu'une erreur aapt.exe se produit
[Java] Pourquoi aucune erreur de compilation ne se produit pour les classes qui n'implémentent pas Comparable
J'ai créé un formulaire de publication Rails, mais je ne peux pas publier (balise de formulaire) / Aucune erreur ne se produit
[Rails] Résolution d'erreur lors de la génération de jetons avec PAYJP
Erreur lors de l'installation de l'ensemble lors de l'exécution de rails neufs
Une erreur de serveur interne 500 se produit dans l'environnement de production Rails
Aucun message d'erreur ne s'affiche lorsque l'action de création échoue
Erreur rencontrée avec les notes lors du déploiement de docker sur des rails
Erreur ExecJS :: RuntimeUnavailable: que faire quand cela se produit
[Android] Pourquoi une erreur de version de conflit se produit lors du chargement d'une bibliothèque du côté de l'application Android
[Rails 6] Que faire lorsqu'une erreur de modèle manquante se produit après l'introduction du haml [Super facile]