diff options
author | José Valim <jose.valim@gmail.com> | 2010-03-08 02:04:18 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-03-08 02:04:18 +0100 |
commit | ffd8d753f171a33cb0f8dadaff7fc5ba12b8f6b0 (patch) | |
tree | fca50e828f91520f2e99323eff90e1bbc81bea7d /actionpack/lib/action_view | |
parent | c7564d74e8a9b451f9fc78566ab0c734671f9612 (diff) | |
download | rails-ffd8d753f171a33cb0f8dadaff7fc5ba12b8f6b0.tar.gz rails-ffd8d753f171a33cb0f8dadaff7fc5ba12b8f6b0.tar.bz2 rails-ffd8d753f171a33cb0f8dadaff7fc5ba12b8f6b0.zip |
Move layout lookup to views.
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r-- | actionpack/lib/action_view/base.rb | 6 | ||||
-rw-r--r-- | actionpack/lib/action_view/render/partials.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/render/rendering.rb | 16 | ||||
-rw-r--r-- | actionpack/lib/action_view/template/lookup.rb | 8 |
4 files changed, 25 insertions, 7 deletions
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index 22bc390dc5..5acd2a8b82 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -263,11 +263,7 @@ module ActionView #:nodoc: attr_internal :controller, :template, :config attr_reader :template_lookup - delegate :find, :view_paths, :view_paths=, :to => :template_lookup - - def formats=(formats) - update_details(:formats => Array(formats)) - end + delegate :find, :formats, :formats=, :view_paths, :view_paths=, :to => :template_lookup def update_details(details) old_details = template_lookup.details diff --git a/actionpack/lib/action_view/render/partials.rb b/actionpack/lib/action_view/render/partials.rb index 74513935a7..52cb188508 100644 --- a/actionpack/lib/action_view/render/partials.rb +++ b/actionpack/lib/action_view/render/partials.rb @@ -330,7 +330,7 @@ module ActionView details = options[:_details] # TODO This should happen automatically as well - self.formats = details[:formats] if details + self.formats = details[:formats] if details[:formats] renderer = PartialRenderer.new(self, options, nil) text = renderer.render options[:_template] = renderer.template diff --git a/actionpack/lib/action_view/render/rendering.rb b/actionpack/lib/action_view/render/rendering.rb index 1be5675e37..b92a03ddbd 100644 --- a/actionpack/lib/action_view/render/rendering.rb +++ b/actionpack/lib/action_view/render/rendering.rb @@ -88,12 +88,26 @@ module ActionView # _layout:: The layout, if any, to wrap the Template in def render_template(options) _evaluate_assigns_and_ivars - template, layout = options.values_at(:_template, :_layout) + template, layout = options.values_at(:_template, :layout) _render_template(template, layout, options) end + def _find_layout(template, layout) + begin + prefix = "layouts" unless layout =~ /\blayouts/ + layout = find(layout, prefix) + rescue ActionView::MissingTemplate => e + update_details(:formats => nil) do + raise unless template_lookup.exists?(layout, prefix) + end + end + end + def _render_template(template, layout = nil, options = {}) + self.formats = template.details[:formats] + locals = options[:locals] || {} + layout = _find_layout(template, layout) if layout.is_a?(String) ActiveSupport::Notifications.instrument("action_view.render_template", :identifier => template.identifier, :layout => layout.try(:identifier)) do diff --git a/actionpack/lib/action_view/template/lookup.rb b/actionpack/lib/action_view/template/lookup.rb index ea3a12615b..30de093934 100644 --- a/actionpack/lib/action_view/template/lookup.rb +++ b/actionpack/lib/action_view/template/lookup.rb @@ -23,6 +23,14 @@ module ActionView self.view_paths = view_paths end + def formats + @details[:formats] + end + + def formats=(value) + self.details = @details.merge(:formats => Array(value)) + end + def view_paths=(paths) @view_paths = ActionView::Base.process_view_paths(paths) end |