ruby - Rails Controller 中的运算符 (||=) 出现问题

标签 ruby ruby-on-rails-3 ruby-on-rails-3.1

def index
  @hash ||= Hash.new
  puts @hash       #the result is {} every time I reload the action
  @hash['key'] = value
end

我认为通过这样做,变量@hash 将只被签名一次。

但事实证明,如果我是对的,每次重新加载索引操作时,@hash 都会是一个新的空哈希。

我是对的还是有其他原因导致这种奇怪的现象?

最佳答案

Controller 实例不会为不同的请求共享(那将是一团糟!),每个请求都会创建一个新实例。

只需使用类似散列的对象session,这是进行有状态请求的正确方法(数据通常 - 但不总是,还有其他方式 - 存储在 cookie 中)

session[:my_key] = my_value

关于ruby - Rails Controller 中的运算符 (||=) 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190934/

相关文章:

ruby-on-rails - Rails 数组 group_by

Ruby:使用gsub有条件地替换字符串

ruby-on-rails - 如何在 Rails 控制台中重新加载模型?

jquery - 正在升级:with parameter on a link_to_remote in Rails 3

mysql - Windows 中用于 mysql 5.5 的 Ruby Gem

ruby - 导轨 3 : method delegations with nil relationships

c# - 如何在 Ruby 应用程序中匹配 C# 中 Unicode 字符串的 MD5 散列输出?

ruby-on-rails - 如何在 RSpec 中重用上下文?

ruby-on-rails - Rails 3 - 未定义方法 `map' 为 nil :NilClass for my own validation

ruby-on-rails-3.1 - Rack 中间件如何重定向到我的 Rails 应用程序中的 View