aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-04-08 19:14:59 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-04-08 19:14:59 -0300
commita9d58c77da800bb0052c9bfa432828b02526022c (patch)
tree21b9b34f6274f6819aeab66cf61777db2d7b9487 /actionview
parent041c2c879a3c4086ad3aa6d30fed1eede1d53c11 (diff)
parentc51aa9f6f2c361e1efc53020028592564318e8a6 (diff)
downloadrails-a9d58c77da800bb0052c9bfa432828b02526022c.tar.gz
rails-a9d58c77da800bb0052c9bfa432828b02526022c.tar.bz2
rails-a9d58c77da800bb0052c9bfa432828b02526022c.zip
Merge pull request #19685 from vngrs/actionview_parent_layout_bug
fix for actionview parent layout bug
Diffstat (limited to 'actionview')
-rw-r--r--actionview/lib/action_view/layouts.rb25
-rw-r--r--actionview/test/actionpack/controller/layout_test.rb14
2 files changed, 31 insertions, 8 deletions
diff --git a/actionview/lib/action_view/layouts.rb b/actionview/lib/action_view/layouts.rb
index 9d636c8c9e..1fc609f2cd 100644
--- a/actionview/lib/action_view/layouts.rb
+++ b/actionview/lib/action_view/layouts.rb
@@ -315,16 +315,25 @@ module ActionView
name_clause
end
- self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
- def _layout
- if _conditional_layout?
+ if self._layout_conditions.empty?
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
+ def _layout
#{layout_definition}
- else
- #{name_clause}
end
- end
- private :_layout
- RUBY
+ private :_layout
+ RUBY
+ else
+ self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
+ def _layout
+ if _conditional_layout?
+ #{layout_definition}
+ else
+ #{name_clause}
+ end
+ end
+ private :_layout
+ RUBY
+ end
end
private
diff --git a/actionview/test/actionpack/controller/layout_test.rb b/actionview/test/actionpack/controller/layout_test.rb
index 7b8a83e2fe..64ab125637 100644
--- a/actionview/test/actionpack/controller/layout_test.rb
+++ b/actionview/test/actionpack/controller/layout_test.rb
@@ -122,6 +122,14 @@ class PrependsViewPathController < LayoutTest
end
end
+class ParentController < LayoutTest
+ layout 'item'
+end
+
+class ChildController < ParentController
+ layout 'layout_test', only: :hello
+end
+
class OnlyLayoutController < LayoutTest
layout 'item', :only => "hello"
end
@@ -225,6 +233,12 @@ class LayoutSetInResponseTest < ActionController::TestCase
get :hello
assert_equal "layout_test.erb hello.erb", @response.body.strip
end
+
+ def test_respect_to_parent_layout
+ @controller = ChildController.new
+ get :goodbye
+ assert_template :layout => "layouts/item"
+ end
end
class SetsNonExistentLayoutFile < LayoutTest