如果我在Rails控制器中创建实例变量,那么该实例变量的范围是什么?是否可用于所有Rails应用程序,或仅用于与该特定控制器关联的视图和模型?由于我是Rails的新手,我有点困惑。
答案 0 :(得分:8)
Rails控制器中的实例变量以两种方式使用:
当Rails控制器操作呈现视图时,控制器的实例变量将(浅)复制到视图实例。 (视图实例是模板中self
的值。)因此,在操作视图中有效地提供了在操作呈现时定义的控制器实例变量。视图助手只是由视图实例扩展的模块,因此控制器实例变量也可以在视图助手方法中有效使用。
请注意,虽然控制器实例变量被复制到视图中,但视图中定义的实例变量不会复制回控制器。这通常不是你通常需要发生的事情,因为渲染视图通常是在控制器动作中完成的最后一件事。视图中定义的局部变量在整个视图中都可用,因此根本没有理由在视图中定义实例变量。
给定控制器中的实例变量在其他控制器,其他控制器视图或任何模型中都不可用。