Ruby on rails Ruby_on_rails会话和语法
我不熟悉rails。查看其他人编写的代码(用于数据过滤器)。试图弄清楚以下内容的确切含义:Ruby on rails Ruby_on_rails会话和语法,ruby-on-rails,session,Ruby On Rails,Session,我不熟悉rails。查看其他人编写的代码(用于数据过滤器)。试图弄清楚以下内容的确切含义: session[:filters]-只是一个包含会话中所选筛选器的哈希?是:过滤会话选项还是在代码中的某个地方定义的 会话[:过滤器][控制器]-与1相同,但是否指定控制器 会话[:过滤器][控制器][会话[:用户]]- session[:filters][controller]。删除(session[:user])- 基本上是rails使用的Hash对象,将数据作为cookie存储在客户端,作为Hash
session[:filters]
-只是一个包含会话中所选筛选器的哈希?是:过滤会话选项还是在代码中的某个地方定义的会话[:过滤器][控制器]
-与1相同,但是否指定控制器会话[:过滤器][控制器][会话[:用户]]
-session[:filters][controller]。删除(session[:user])
-Hash
对象,将数据作为cookie存储在客户端,作为Hash
,它使用键
存储信息(有关哈希的更多信息)
在您的代码中,:filters
只是会话
散列的键
(您可以从:
中看出),它包含有关筛选器的信息。因此,:过滤器
没有在其他地方定义,尽管它应该在其他地方设置,例如:
session[:filters] = some_filter
在第二行中,您会看到[:filters][controller]
,这意味着:filters
也是一个散列
,因此它还包含键,其中一个键是控制器的名称(同样,我认为这是因为名称,但我可能是错的)。这里的控制器
只是一个变量(注意没有:
),它包含:过滤器
散列的键的名称
所以,如果您继续,现在就可以知道无论控制器
值是什么,都是另一个散列
。在第3行中,会话[:user]
是该散列的键(其中,:user
是会话
散列的另一个键,我假设该散列包含用户名或id)
最后,在第4行delete
中,从散列中删除键会话[:user]
(即从cookie中删除)
考虑这个例子:
# create session hash with :user key
session = { :user => "user79" }
#=> {:user=>"user79"}
# create another hash with session[:user] key and any value
hash1 = { session[:user] => "my value" }
#=> {"user79"=>"my value"}
# create controller variable with a value
controller = "users"
#=> "users"
# create another hash with controller key and hash1 as a value
hash2 = { controller => hash1 }
#=> {"users"=>{"user79"=>"my value"}}
# add :filters key to session with hash2 as a value
session[:filters] = hash2
# Retrieve the value from the session hash
session[:filters][controller][session[:user]]
#=> "my value"
# Delete session[:user] key from the session hash
session[:filters][controller].delete(session[:user])
#=> "my value" (delete returns the deleted value)
# Retrieve the value from the session hash
session[:filters][controller][session[:user]]
#=> nil
session[:filters][controller]
#=> {} (returns empty hash since we deleted the only key it had)
@user7934228很高兴为您提供帮助!如果您发现答案完整,您可以接受它(单击勾号)。:)