gpt4 book ai didi

ruby - Rails 中的类变量在浏览器刷新时持续存在

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:50 26 4
gpt4 key购买 nike

在长期使用 PHP 背景之后,我对 Ruby 和 Rails 还很陌生。我遇到了一个奇怪的错误,这让我很困惑。

我有一个像这样设置的类变量:

class Article < ActiveRecord::Base

@@customTags = []

def self.addCustomGA(slot, name, value, scope=3)
h = {:slot => slot, :name => name, :value => value, :scope => scope}
@@customTags.push h

end

def self.customTagOutput

tags = ""
@@customTags.each do |ct|
tags << "_gaq.push(['_setCustomVar', "+ct[:slot].to_s+", '"+ct[:name].to_s+"', '"+ct[:value].to_s+"', "+ct[:scope].to_s+"]);\n"
end
tags
end

end

我正在我的 Controller 中运行一个小测试,调用:

Article.addCustomGA(1, 'categories', @article.category_list);

然后在我的 HAML View 中,我输出如下内容:

#{Article.customTagOutput}

这在第一次使用时效果很好。但是当我刷新页面时,它会不断向数组添加一个条目 - 所以 @@customTags 数组似乎在我的 session 中持续存在!如果我几分钟不刷新,它就会自行重置。

我的第一个想法是发生了某种缓存问题,但谷歌没有为我找到任何东西。

最佳答案

首先,不要在模型的类变量中存储任何内容。类变量通常不是一个好主意。这看起来确实应该在相关 Controller 的帮助程序文件中的 View 帮助程序方法中完成(类似于 app/helpers/articles_helper.rb)。

你不应该需要为整个模型类存储这样的东西。您可以为每个实例存储数据,也可以将其硬编码到应用中。

在刷新之间保留变量的原因是 Rails 加载一次 Article 类(在启动时)并且不会重新创建类变量(因为类不会重新加载).

关于ruby - Rails 中的类变量在浏览器刷新时持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271945/

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