Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
56fb60eb
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,发现更多精彩内容 >>
提交
56fb60eb
编写于
3月 16, 2010
作者:
J
José Valim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix rendering of HTML partials inside JS templates [#4197 status:resolved]
上级
df735cf5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
23 addition
and
3 deletion
+23
-3
actionpack/lib/action_view/render/layouts.rb
actionpack/lib/action_view/render/layouts.rb
+14
-3
actionpack/lib/action_view/template.rb
actionpack/lib/action_view/template.rb
+2
-0
actionpack/test/controller/new_base/render_rjs_test.rb
actionpack/test/controller/new_base/render_rjs_test.rb
+7
-0
未找到文件。
actionpack/lib/action_view/render/layouts.rb
浏览文件 @
56fb60eb
...
...
@@ -43,10 +43,16 @@ def _layout_for(name = nil, &block) #:nodoc:
# This is the method which actually finds the layout using details in the lookup
# context object. If no layout is found, it checkes if at least a layout with
# the given name exists across all details before raising the error.
def
find_layout
(
layout
)
#:nodoc:
#
# If self.formats contains several formats, just the first one is considered in
# the layout lookup.
def
find_layout
(
layout
)
begin
layout
=~
/^\//
?
with_fallbacks
{
find_template
(
layout
)
}
:
find_template
(
layout
)
if
formats
.
size
==
1
_find_layout
(
layout
)
else
update_details
(
:formats
=>
self
.
formats
[
0
,
1
]){
_find_layout
(
layout
)
}
end
rescue
ActionView
::
MissingTemplate
=>
e
update_details
(
:formats
=>
nil
)
do
raise
unless
template_exists?
(
layout
)
...
...
@@ -54,6 +60,11 @@ def find_layout(layout) #:nodoc:
end
end
def
_find_layout
(
layout
)
#:nodoc:
layout
=~
/^\//
?
with_fallbacks
{
find_template
(
layout
)
}
:
find_template
(
layout
)
end
# Contains the logic that actually renders the layout.
def
_render_layout
(
layout
,
locals
,
&
block
)
#:nodoc:
layout
.
render
(
self
,
locals
){
|*
name
|
_layout_for
(
*
name
,
&
block
)
}
...
...
actionpack/lib/action_view/template.rb
浏览文件 @
56fb60eb
...
...
@@ -31,7 +31,9 @@ def initialize(source, identifier, handler, details)
format
=
details
[
:format
]
format
||=
handler
.
default_format
.
to_sym
if
handler
.
respond_to?
(
:default_format
)
format
||=
:html
@formats
=
[
format
.
to_sym
]
@formats
<<
:html
if
@formats
.
first
==
:js
end
def
render
(
view
,
locals
,
&
block
)
...
...
actionpack/test/controller/new_base/render_rjs_test.rb
浏览文件 @
56fb60eb
...
...
@@ -5,8 +5,10 @@ class BasicController < ActionController::Base
self
.
view_paths
=
[
ActionView
::
FixtureResolver
.
new
(
"render_rjs/basic/index.js.rjs"
=>
"page[:customer].replace_html render(:partial => 'customer')"
,
"render_rjs/basic/index_html.js.rjs"
=>
"page[:customer].replace_html :partial => 'customer'"
,
"render_rjs/basic/index_no_js.js.rjs"
=>
"page[:developer].replace_html render(:partial => 'developer')"
,
"render_rjs/basic/_customer.js.erb"
=>
"JS Partial"
,
"render_rjs/basic/_customer.html.erb"
=>
"HTML Partial"
,
"render_rjs/basic/_developer.html.erb"
=>
"HTML Partial"
,
"render_rjs/basic/index_locale.js.rjs"
=>
"page[:customer].replace_html :partial => 'customer'"
,
"render_rjs/basic/_customer.da.html.erb"
=>
"Danish HTML Partial"
,
"render_rjs/basic/_customer.da.js.erb"
=>
"Danish JS Partial"
...
...
@@ -37,6 +39,11 @@ def teardown
assert_response
(
"$(
\"
customer
\"
).update(
\"
JS Partial
\"
);"
)
end
test
"rendering a partial in an RJS template should pick the HTML one if no JS is available"
do
get
:index_no_js
,
"format"
=>
"js"
assert_response
(
"$(
\"
developer
\"
).update(
\"
HTML Partial
\"
);"
)
end
test
"replacing an element with a partial in an RJS template should pick the HTML template over the JS one"
do
get
:index_html
,
"format"
=>
"js"
assert_response
(
"$(
\"
customer
\"
).update(
\"
HTML Partial
\"
);"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录