符号不等于符号

时间:2016-11-19 19:42:22

标签: ruby ruby-on-rails-5

我有一个符号,我在我的控制器中传递给这样的函数调用:

set(:value, 1)

该函数在辅助函数中,或多或少像这样工作

def set(where, what)
  session[:a][where] = what
end
def get(where)
  return session[:a][where]
end

我在另一个应该获取相同值的函数的视图中使用相同的符号:

get(:value)

通过调试我发现我最终检查了哈希表中的2个值。 我的看起来工作得很好,但是当我尝试从我的视图中调用get时,我的哈希试图找到一个值,但是它周围有单引号。我已经尝试了很多东西来看看发生了什么,将要硬编码的值更改为函数没有帮助,但是,用字符串替换符号是。

1 个答案:

答案 0 :(得分:1)

看起来你的符号是字符串化的(在会话序列化期间)。为了避免这种情况,请先抢先将它们串联起来!

def set(where, what)
  session[:a][where.to_s] = what
end
def get(where)
  return session[:a][where.to_s]
end