gpt4 book ai didi

ruby-on-rails - Rails Controller 和实例变量

转载 作者:行者123 更新时间:2023-12-03 15:58:03 28 4
gpt4 key购买 nike

典型的rails Controller 可能会执行以下操作:

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属于同一个对象吗?

最佳答案

  • 正确;它属于正在处理当前请求的FoosController实例。
  • 是的,每个请求都会创建一个 Controller 的新实例,这就是为什么实例变量可用于保存单个请求的状态的原因。
  • 是,但是:如果未调用index,则不会初始化@foos,并且在show1的代码中单击@foos操作时,没有show实例变量。


  • 1如果您从 index调用了 show,那么 @foos将被初始化并在页面上可用。并不是您应该这样做,因为这使您感到困惑。

    关于ruby-on-rails - Rails Controller 和实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924075/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com