Quelle est la différence entre @title
et title
? Puisque les deux peuvent être des noms de variables. De plus, comment puis-je décider du type de variable à utiliser? Avec @
ou pas?
ruby-on-rails
ruby
variables
OneZero
la source
la source
Réponses:
title
est une variable locale. Ils n'existent que dans sa portée (bloc actuel)@title
est une variable d'instance - et est disponible pour toutes les méthodes de la classe.Vous pouvez en savoir plus ici: http://strugglingwithruby.blogspot.dk/2010/03/variables.html
Dans Ruby on Rails - déclarer vos variables dans votre contrôleur en tant que variables d'instance (
@title
) les rend disponibles pour votre vue.la source
À utiliser
@title
dans vos contrôleurs lorsque vous souhaitez que votre variable soit disponible dans vos vues.L'explication est qu'il
@title
s'agit d'une variable d'instance et d'title
une variable locale et que rails rend les variables d'instance des contrôleurs disponibles pour les vues. Cela se produit car le code du modèle (erb, haml, etc.) est exécuté dans le cadre de l'instance de contrôleur actuelle.la source
La différence réside dans la portée de la variable. La @version est disponible pour toutes les méthodes de l'instance de classe.
La réponse courte, si vous êtes dans le contrôleur et que vous devez mettre la variable à la disposition de la vue, puis l'utiliser
@variable
.Pour une réponse beaucoup plus longue, essayez ceci: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
la source
@variable
les s sont appelées variables d'instance dans ruby. Ce qui signifie que vous pouvez accéder à ces variables dans N'IMPORTE QUELLE MÉTHODE à l'intérieur de la classe. [Dans toutes les méthodes de la classe]Les variables sans le
@
symbole sont appelées variables locales, ce qui signifie que vous pouvez accéder à ces variables locales uniquement dans cette méthode déclarée. Limité à la portée locale.Exemple de variables d'instance:
Dans l'exemple ci - dessus
@cust_id
,@cust_name
,@cust_addr
sont accessibles dans une autre méthode dans la classe. Mais la même chose ne serait pas accessible avec des variables locales.la source
Un tutoriel sur Qu'est-ce que la portée variable? présente assez bien certains détails, il suffit de joindre les informations connexes ici
la source
Une variable locale n'est accessible qu'à partir du bloc de son initialisation. Une variable locale commence également par une lettre minuscule (az) ou un trait de soulignement (_).
Et la variable d'instance est une instance de
self
et commence par une@
également une variable d'instance appartient à l'objet lui-même. Les variables d'instance sont celles sur lesquelles vous effectuez des méthodes, par exemple,.send
etc.exemple:
La
@user
est la variable d'instanceEt les variables d'instance non initialisées ont une valeur de
Nil
la source
@title
&title
?@title
outitle
Les variables @ sont des variables d'instance, sans sont des variables locales.
En savoir plus sur http://ruby.about.com/od/variables/a/Instance-Variables.htm
la source