【问题标题】:Lifecycle of Instance variables in Ruby on RailsRuby on Rails 中实例变量的生命周期
【发布时间】:2019-05-09 07:20:01
【问题描述】:

我不太清楚Ruby on Rails中实例变量的生命周期。

  1. 我有一个实例变量 @work_days(我在其中获取并加载一个月中所有工作日的列表。用户从 UI 中的 date_select 选择月份)。

  2. 现在我有一个Generate Report 按钮,它通过调用控制器中的show 方法生成一个excel 报告

  3. 每次用户单击Generate Report 按钮(并调用show 方法)时,@work_days 的值似乎是nil,我每次都必须对其进行初始化。

有没有办法避免这种情况?为什么每次调用控制器的方法show,实例变量的值都会变成nil

【问题讨论】:

    标签: ruby-on-rails ruby instance-variables


    【解决方案1】:

    Rails 控制器根据请求实例化。这意味着每次收到请求时,所有实例变量都是nil,您需要对其进行初始化。

    【讨论】:

    • 非常感谢您的澄清。类变量也一样吗?
    • 这取决于您设置它们的位置。一般来说,它们的生命周期与类的生命周期一样长(除非它们未明确设置)。
    • 控制器类是否会跨越多个请求?
    • 是的。它被加载一次,然后就存在于内存中。
    • 我想检查控制器内的function 是否在用户会话中第一次被调用。 class variable 是正确的选择吗?关于如何实施此检查的任何良好做法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2010-10-31
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多