Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
5ac0273c
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,发现更多精彩内容 >>
提交
5ac0273c
编写于
12月 29, 2011
作者:
J
José Valim
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4226 from grentis/content_for_with_flush
content_for with flush parameter
上级
0035c54e
8a130edb
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
84 addition
and
8 deletion
+84
-8
actionpack/lib/action_view/helpers/capture_helper.rb
actionpack/lib/action_view/helpers/capture_helper.rb
+29
-8
actionpack/test/template/capture_helper_test.rb
actionpack/test/template/capture_helper_test.rb
+55
-0
未找到文件。
actionpack/lib/action_view/helpers/capture_helper.rb
浏览文件 @
5ac0273c
...
...
@@ -110,7 +110,7 @@ def capture(*args)
# That will place +script+ tags for your default set of JavaScript files on the page;
# this technique is useful if you'll only be using these scripts in a few views.
#
# Note that content_for concatenates the blocks it is given for a particular
# Note that content_for concatenates
(default)
the blocks it is given for a particular
# identifier in order. For example:
#
# <% content_for :navigation do %>
...
...
@@ -127,16 +127,37 @@ def capture(*args)
#
# <ul><%= content_for :navigation %></ul>
#
# If the flush parameter is true content_for replaces the blocks it is given. For example:
#
# <% content_for :navigation do %>
# <li><%= link_to 'Home', :action => 'index' %></li>
# <% end %>
#
# <%# Add some other content, or use a different template: %>
#
# <% content_for :navigation, true do %>
# <li><%= link_to 'Login', :action => 'login' %></li>
# <% end %>
#
# Then, in another template or layout, this code would render only the last link:
#
# <ul><%= content_for :navigation %></ul>
#
# Lastly, simple content can be passed as a parameter:
#
# <% content_for :script, javascript_include_tag(:defaults) %>
#
# WARNING: content_for is ignored in caches. So you shouldn't use it
# for elements that will be fragment cached.
def
content_for
(
name
,
content
=
nil
,
&
block
)
def
content_for
(
name
,
content
=
nil
,
flush
=
false
,
&
block
)
if
content
||
block_given?
content
=
capture
(
&
block
)
if
block_given?
@view_flow
.
append
(
name
,
content
)
if
content
if
block_given?
flush
=
content
if
content
content
=
capture
(
&
block
)
end
if
content
flush
?
@view_flow
.
set
(
name
,
content
)
:
@view_flow
.
append
(
name
,
content
)
end
nil
else
@view_flow
.
get
(
name
)
...
...
actionpack/test/template/capture_helper_test.rb
浏览文件 @
5ac0273c
...
...
@@ -53,6 +53,13 @@ def test_content_for_with_multiple_calls
assert_equal
'foobar'
,
content_for
(
:title
)
end
def
test_content_for_with_multiple_calls_and_flush
assert
!
content_for?
(
:title
)
content_for
:title
,
'foo'
content_for
:title
,
'bar'
,
true
assert_equal
'bar'
,
content_for
(
:title
)
end
def
test_content_for_with_block
assert
!
content_for?
(
:title
)
content_for
:title
do
...
...
@@ -63,6 +70,39 @@ def test_content_for_with_block
assert_equal
'foobar'
,
content_for
(
:title
)
end
def
test_content_for_with_block_and_multiple_calls_with_flush
assert
!
content_for?
(
:title
)
content_for
:title
do
'foo'
end
content_for
:title
,
true
do
'bar'
end
assert_equal
'bar'
,
content_for
(
:title
)
end
def
test_content_for_with_block_and_multiple_calls_with_flush_nil_content
assert
!
content_for?
(
:title
)
content_for
:title
do
'foo'
end
content_for
:title
,
nil
,
true
do
'bar'
end
assert_equal
'bar'
,
content_for
(
:title
)
end
def
test_content_for_with_block_and_multiple_calls_without_flush
assert
!
content_for?
(
:title
)
content_for
:title
do
'foo'
end
content_for
:title
,
false
do
'bar'
end
assert_equal
'foobar'
,
content_for
(
:title
)
end
def
test_content_for_with_whitespace_block
assert
!
content_for?
(
:title
)
content_for
:title
,
'foo'
...
...
@@ -74,12 +114,27 @@ def test_content_for_with_whitespace_block
assert_equal
'foobar'
,
content_for
(
:title
)
end
def
test_content_for_with_whitespace_block_and_flush
assert
!
content_for?
(
:title
)
content_for
:title
,
'foo'
content_for
:title
,
true
do
output_buffer
<<
"
\n
"
nil
end
content_for
:title
,
'bar'
,
true
assert_equal
'bar'
,
content_for
(
:title
)
end
def
test_content_for_returns_nil_when_writing
assert
!
content_for?
(
:title
)
assert_equal
nil
,
content_for
(
:title
,
'foo'
)
assert_equal
nil
,
content_for
(
:title
)
{
output_buffer
<<
'bar'
;
nil
}
assert_equal
nil
,
content_for
(
:title
)
{
output_buffer
<<
"
\n
"
;
nil
}
assert_equal
'foobar'
,
content_for
(
:title
)
assert_equal
nil
,
content_for
(
:title
,
'foo'
,
true
)
assert_equal
nil
,
content_for
(
:title
,
true
)
{
output_buffer
<<
'bar'
;
nil
}
assert_equal
nil
,
content_for
(
:title
,
true
)
{
output_buffer
<<
"
\n
"
;
nil
}
assert_equal
'bar'
,
content_for
(
:title
)
end
def
test_content_for_question_mark
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录