Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
8a36e907
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 搜索 >>
提交
8a36e907
编写于
12月 26, 2009
作者:
J
José Valim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
More <%= render(@posts) %> optimization.
上级
ff1a1c0b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
24 deletion
+20
-24
actionpack/lib/action_view/render/partials.rb
actionpack/lib/action_view/render/partials.rb
+20
-24
未找到文件。
actionpack/lib/action_view/render/partials.rb
浏览文件 @
8a36e907
...
...
@@ -191,23 +191,30 @@ def initialize(view_context, options, block)
def
setup
(
options
,
block
)
partial
=
options
[
:partial
]
@options
=
options
@locals
=
options
[
:locals
]
||
{}
@block
=
block
@options
=
options
@locals
=
options
[
:locals
]
||
{}
@block
=
block
if
String
===
partial
@object
=
options
[
:object
]
@path
=
partial
@object
=
options
[
:object
]
@path
=
partial
@collection
=
collection
else
@object
=
partial
@path
=
partial_path
(
partial
)
if
@collection
=
collection
paths
=
@collection_paths
=
@collection
.
map
{
|
o
|
partial_path
(
o
)
}
@path
=
paths
.
uniq
.
size
==
1
?
paths
.
first
:
nil
else
@path
=
partial_path
end
end
end
def
render
options
=
@options
if
@collection
=
collection
if
@collection
ActiveSupport
::
Notifications
.
instrument
(
:render_collection
,
:path
=>
@path
,
:count
=>
@collection
.
size
)
do
render_collection
...
...
@@ -226,28 +233,17 @@ def render
def
render_collection
@template
=
template
=
find_template
return
nil
if
@collection
.
blank?
if
@options
.
key?
(
:spacer_template
)
spacer
=
find_template
(
@options
[
:spacer_template
]).
render
(
@view
,
@locals
)
end
result
=
if
template
collection_with_template
(
template
)
else
paths
=
@collection
.
map
{
|
o
|
partial_path
(
o
)
}
if
paths
.
uniq
.
size
==
1
collection_with_template
(
find_template
(
paths
.
first
))
else
collection_without_template
(
paths
)
end
end
result
=
template
?
collection_with_template
:
collection_without_template
result
.
join
(
spacer
).
html_safe!
end
def
collection_with_template
(
template
)
def
collection_with_template
(
template
=
@template
)
segments
,
locals
,
as
=
[],
@locals
,
@options
[
:as
]
||
template
.
variable_name
counter_name
=
template
.
counter_name
...
...
@@ -264,14 +260,14 @@ def collection_with_template(template)
segments
end
def
collection_without_template
(
collection_paths
)
def
collection_without_template
(
collection_paths
=
@collection_paths
)
segments
,
locals
,
as
=
[],
@locals
,
@options
[
:as
]
index
,
template
=
-
1
,
nil
@collection
.
each_with_index
do
|
object
,
i
|
template
=
find_template
(
collection_paths
[
i
])
locals
[
template
.
counter_name
]
=
(
index
+=
1
)
locals
[
template
.
variable_name
]
=
object
locals
[
as
||
template
.
variable_name
]
=
object
segments
<<
template
.
render
(
@view
,
locals
)
end
...
...
@@ -319,9 +315,9 @@ def _find_template(path)
def
partial_path
(
object
=
@object
)
@partial_names
[
object
.
class
]
||=
begin
return
nil
unless
object
.
respond_to?
(
:to_model
)
object
=
object
.
to_model
if
object
.
respond_to?
(
:to_model
)
object
.
to_model
.
class
.
model_name
.
partial_path
.
dup
.
tap
do
|
partial
|
object
.
class
.
model_name
.
partial_path
.
dup
.
tap
do
|
partial
|
path
=
@view
.
controller_path
partial
.
insert
(
0
,
"
#{
File
.
dirname
(
path
)
}
/"
)
if
path
.
include?
(
?/
)
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录