ruby - 在ror中正确的将变量传到view的做法是怎么的?
黄舟
黄舟 2017-04-21 11:17:50
0
4
777

初学ruby,ror中生成了一个controller和view,代码如下:

class MyController < ApplicationController
  def index
    @output="123"
  end
end

我的问题是,为什么变量必须加上AT才能传入view?如果去掉AT,就会报错,AT是什么关键字还是框架约定?什么原理?如果可以请告诉我通识的写法,谢谢

也许这个问题太无聊,但我不太清楚该如何描述,所以也没有搜索到相关信息。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(4)
巴扎黑

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

Ty80

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.

Peter_Zhu

@ en Ruby est équivalent à self en Python

黄舟

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal