典型的rails控制器可能会执行以下操作:
class FoosController < ApplicationController
def index
@foos = Foo.all
end
end
我理解rails足够知道@foos
将返回一个Foo对象数组,但@foos
本身就是一个实例变量。
那么实例变量属于哪个对象?它是FoosController类的一个实例吗?每次访问索引页时是否创建了此对象的不同实例?如果我访问显示页面,那么会引入新的变量@foo
:
def show
@foo = Foo.find(params[:id])
end
此变量是否属于@foos所属的同一对象?
答案 0 :(得分:5)
FoosController
实例。index
,则@foos
将不会被初始化,当@foos
操作被点击时,没有show
实例变量您显示的代码 1 。 1 如果您从index
致电show
,那么@foos
将在页面上初始化并可用。并不是说你应该这样做,因为那令人困惑。