Ruby on rails 类变量Ruby中的实例变量

Ruby on rails 类变量Ruby中的实例变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图在RUBY中为获取一个动态数组,该数组将被动态更改。我无法推送到类变量。任何人可以帮助我怎么做,请看下面的代码 class SampleController < ApplicationController @@array = [] @@x = 0 def ajax_data y = (rand()*100).round() @@array << [@@x,y] @@x += 1 end end class S

我试图在RUBY中为获取一个动态数组,该数组将被动态更改。我无法推送到类变量。任何人可以帮助我怎么做,请看下面的代码

class SampleController < ApplicationController

  @@array = []
  @@x = 0

  def ajax_data    
    y = (rand()*100).round()
    @@array << [@@x,y]
    @@x += 1   
  end 

end
class SampleController@@arrayrubyonrails,在开发模式下,默认情况下会根据每个请求重新加载源文件。由于您将“程序”的状态保存在类变量中,因此重新加载类会消除更改

顺便说一句,类变量的使用通常非常谨慎,因为它们本质上是全局变量。尤其是在Rails web应用程序中。在数据库中保存任何状态,而不是在类的上下文中

更新:

请记住,web服务器进程通常被认为是无状态的。另外,您通常在生产环境中运行多个进程,这意味着您的计数器在请求之间会有所不同,这取决于哪个进程将响应请求。此外,进程可以重新启动,这意味着您的计数器将丢失

在Rails中,如果某件事情如此棘手,通常意味着您试图做一些不应该做的事情:)


如果您真的不想使用DB,并且如果计数器不应该对页面的所有访问者都是全局的,那么您可以尝试将计数器存储在cookie中:

RubyonRails,在开发模式下,默认情况下会在每次请求时重新加载源文件。由于您将“程序”的状态保存在类变量中,因此重新加载类会消除更改

顺便说一句,类变量的使用通常非常谨慎,因为它们本质上是全局变量。尤其是在Rails web应用程序中。在数据库中保存任何状态,而不是在类的上下文中

更新:

请记住,web服务器进程通常被认为是无状态的。另外,您通常在生产环境中运行多个进程,这意味着您的计数器在请求之间会有所不同,这取决于哪个进程将响应请求。此外,进程可以重新启动,这意味着您的计数器将丢失

在Rails中,如果某件事情如此棘手,通常意味着您试图做一些不应该做的事情:)


如果您确实不想使用DB,并且计数器不应该对页面的所有访问者都是全局的,您可以尝试将计数器存储在cookie中:

我使用了您的代码并获得了正确的@数组值我使用了您的代码并获得了正确的@数组值谢谢您的回复palmer。在ruby中,有没有任何方法可以像增加@@array这样在请求到达该方法时实现此功能。我不想储存在数据库里谢谢Palmer。我会试试看,让你知道谢谢你的回复帕默。在ruby中,有没有任何方法可以像增加@@array这样在请求到达该方法时实现此功能。我不想储存在数据库里谢谢Palmer。我会试试,让你知道