Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
a6ce984b
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a6ce984b
编写于
2月 08, 2014
作者:
G
Guillermo Iguaran
提交者:
Godfrey Chan
2月 11, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Convert FlashHash in a Hash with indifferent access
上级
ba6861d0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
4 deletion
+25
-4
actionpack/lib/action_dispatch/middleware/flash.rb
actionpack/lib/action_dispatch/middleware/flash.rb
+15
-4
actionpack/test/controller/flash_hash_test.rb
actionpack/test/controller/flash_hash_test.rb
+10
-0
未找到文件。
actionpack/lib/action_dispatch/middleware/flash.rb
浏览文件 @
a6ce984b
...
...
@@ -50,13 +50,14 @@ def initialize(flash)
end
def
[]=
(
k
,
v
)
k
=
k
.
to_s
@flash
[
k
]
=
v
@flash
.
discard
(
k
)
v
end
def
[]
(
k
)
@flash
[
k
]
@flash
[
k
.
to_s
]
end
# Convenience accessor for <tt>flash.now[:alert]=</tt>.
...
...
@@ -92,7 +93,7 @@ def to_session_value
end
def
initialize
(
flashes
=
{},
discard
=
[])
#:nodoc:
@discard
=
Set
.
new
(
discard
)
@discard
=
Set
.
new
(
stringify_array
(
discard
)
)
@flashes
=
flashes
@now
=
nil
end
...
...
@@ -106,16 +107,17 @@ def initialize_copy(other)
end
def
[]=
(
k
,
v
)
k
=
k
.
to_s
@discard
.
delete
k
@flashes
[
k
]
=
v
end
def
[]
(
k
)
@flashes
[
k
]
@flashes
[
k
.
to_s
]
end
def
update
(
h
)
#:nodoc:
@discard
.
subtract
h
.
keys
@discard
.
subtract
stringify_array
(
h
.
keys
)
@flashes
.
update
h
self
end
...
...
@@ -129,6 +131,7 @@ def key?(name)
end
def
delete
(
key
)
key
=
key
.
to_s
@discard
.
delete
key
@flashes
.
delete
key
self
...
...
@@ -186,6 +189,7 @@ def now
# flash.keep # keeps the entire flash
# flash.keep(:notice) # keeps only the "notice" entry, the rest of the flash is discarded
def
keep
(
k
=
nil
)
k
=
k
.
to_s
if
k
@discard
.
subtract
Array
(
k
||
keys
)
k
?
self
[
k
]
:
self
end
...
...
@@ -195,6 +199,7 @@ def keep(k = nil)
# flash.discard # discard the entire flash at the end of the current action
# flash.discard(:warning) # discard only the "warning" entry at the end of the current action
def
discard
(
k
=
nil
)
k
=
k
.
to_s
if
k
@discard
.
merge
Array
(
k
||
keys
)
k
?
self
[
k
]
:
self
end
...
...
@@ -231,6 +236,12 @@ def notice=(message)
def
now_is_loaded?
@now
end
def
stringify_array
(
array
)
array
.
map
do
|
item
|
item
.
kind_of?
(
Symbol
)
?
item
.
to_s
:
item
end
end
end
def
initialize
(
app
)
...
...
actionpack/test/controller/flash_hash_test.rb
浏览文件 @
a6ce984b
...
...
@@ -67,6 +67,16 @@ def test_from_session_value
assert_equal
({
'flashes'
=>
{
'message'
=>
'Hello'
},
'discard'
=>
%w[message]
},
hash
.
to_session_value
)
end
def
test_from_session_value_on_json_serializer
decrypted_data
=
"{
\"
session_id
\"
:
\"
d98bdf6d129618fc2548c354c161cfb5
\"
,
\"
flash
\"
:{
\"
discard
\"
:[],
\"
flashes
\"
:{
\"
message
\"
:
\"
hey you
\"
}} }"
session
=
ActionDispatch
::
Cookies
::
JsonSerializer
.
load
(
decrypted_data
)
hash
=
Flash
::
FlashHash
.
from_session_value
(
session
[
'flash'
])
assert_equal
({
'discard'
=>
%w[message]
,
'flashes'
=>
{
'message'
=>
'hey you'
}},
hash
.
to_session_value
)
assert_equal
"hey you"
,
hash
[
:message
]
assert_equal
"hey you"
,
hash
[
"message"
]
end
def
test_empty?
assert
@hash
.
empty?
@hash
[
'zomg'
]
=
'bears'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录