[RAILS] Variable locale ou erreur de méthode non définie avec option de collecte de modèle partiel

Objet de l'article

Puisque je suis un débutant, je vous serais reconnaissant si vous pouviez signaler des erreurs. Publié à des fins de mémorandum et de sortie.

Si vous n'êtes pas familiarisé avec les modèles partiels, cet article est facile à comprendre. https://pikawaka.com/rails/partial_template#collection%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3

Erreur avec l'option de collecte

Le code à l'origine de l'erreur.

show.html.slim (fichier appelant un modèle partiel)


= render partial: 'reviews/user_review', collection: @reviews

De mon point de vue, je m'attends à ce que chaque élément de @reviews soit affecté à l'examen de la destination de modèle partielle suivante. Cependant, j'obtiens une erreur indiquant que l'examen n'est pas défini comme indiqué ci-dessous. La valeur n'est pas passée.

ActionView::Template::Error (undefined local variable or method `review' for #<#<Class:0x00007fe1e3474948>:0x00007fe1df516738> Did you mean? @reviews): 

_user_review.slim(Modèle partiel)


= "#{review.purpose}"

Changer la variable de destination partielle (Solution ①)

A l'examen, la variable locale est celle spécifiée par: partial. Dans ce cas, il est nécessaire de définir user_review, pas review, dans le modèle partiel. Ceci est affiché en toute sécurité.

show.html.slim (modèle partiel)


= "#{user_review.purpose}"

Spécifiez la variable dans le fichier de vue à appeler partiellement (Solution 2)

Comme mentionné dans la solution (1), la variable locale est supposée être spécifiée par: partial, mais si vous voulez utiliser la variable locale avec un nom différent, utilisez l'option as. Dans ce cas, si vous souhaitez utiliser la révision initialement définie pour les variables utilisées dans la destination de modèle partiel, spécifiez la révision avec l'option as dans le fichier de vue de l'appelant comme indiqué ci-dessous. Ceci est affiché en toute sécurité.

show.html.slim (modèle partiel)


= render partial: 'reviews/user_review', collection: @reviews, as: "review"

Sommaire

Dans la première manière d'écrire, celui qui porte le même nom que le modèle partiel est défini comme une variable dans le fichier de vue. Si vous souhaitez utiliser une variable qui n'est pas le nom du modèle partiel dans le modèle partiel, spécifiez-la avec l'option as.

Recommended Posts

Variable locale ou erreur de méthode non définie avec option de collecte de modèle partiel
Lorsque vous utilisez Slim avec Ruby on Rails, "une variable locale ou une méthode non définie` f'for" s'affiche dans form_with
J'obtiens une erreur avec l'installation du bundle et puma ne peut pas être installé.
Variable locale ou erreur de méthode non définie avec option de collecte de modèle partiel
J'ai eu une erreur "méthode non définie` create" "dans RSpec