Maison > Questions et réponses > le corps du texte
初学ruby,ror中生成了一个controller和view,代码如下:
class MyController < ApplicationController
def index
@output="123"
end
end
我的问题是,为什么变量必须加上AT才能传入view?如果去掉AT,就会报错,AT是什么关键字还是框架约定?什么原理?如果可以请告诉我通识的写法,谢谢
也许这个问题太无聊,但我不太清楚该如何描述,所以也没有搜索到相关信息。
巴扎黑2017-04-21 11:19:50
@var dans Ruby est une variable d'instance, accessible dans toutes les méthodes de la classe ; pour les variables qui ne contiennent pas @, leur portée est dans la méthode actuelle.
ROR consiste à restituer le modèle en appelant une autre méthode après l'exécution de la méthode actuelle. De cette façon, le moyen le plus pratique de transmettre des variables entre deux méthodes consiste à utiliser des variables d'instance. Si vous utilisez des variables ordinaires et dépassez la portée, une erreur sera naturellement signalée.
PHP中文网2017-04-21 11:19:50
Les variables commençant par @ sont des variables d'instance dans Ruby. En revanche, les variables commençant par @@ sont des variables de classe.
Dans Rails, les données sont transmises entre les contrôleurs et les vues via des variables d'instance. Ce processus est par défaut et n'a pas besoin d'être transmis explicitement.
N'oubliez pas cette règle.
黄舟2017-04-21 11:19:50
Utilisez des variables commençant par @
comme variables d'instance.
Dans votre scénario, lorsque vous lancez une requête http, le mécanisme de routage des rails correspond à la méthode d'index de MyController pour la réponse
.
Ainsi, ce qui suit se produira :
1. Initialisez une instance MyController et exécutez la méthode d'index.
2. Définissez la variable d'instance @output du contrôleur sur '123'.
3. Puisque vous n'avez spécifié aucun rendu spécifiquement, index.html.erb sera rendu par défaut
4. Copiez toutes les variables d'instance du contrôleur (en supprimant certaines qui ne doivent pas être copiées)
5. Instanciez une vue et définissez les variables d'instance que vous venez de copier du contrôleur vers la vue
.
6. De cette façon, vous pouvez obtenir cette variable d'instance dans la vue.