mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Refactor ActionController to use find_template and template_exists?
This commit is contained in:
parent
4b6321efa9
commit
e3744166ec
5 changed files with 14 additions and 10 deletions
|
@ -119,17 +119,17 @@ module AbstractController
|
||||||
when true
|
when true
|
||||||
raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil"
|
raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil"
|
||||||
when nil
|
when nil
|
||||||
self.class_eval <<-ruby_eval, __FILE__, __LINE__ + 1
|
self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
||||||
def _layout(details)
|
def _layout(details)
|
||||||
self.class.cache_layout(details) do
|
self.class.cache_layout(details) do
|
||||||
if view_paths.exists?("#{_implied_layout_name}", details, "layouts")
|
if template_exists?("#{_implied_layout_name}", details, :_prefix => "layouts")
|
||||||
"#{_implied_layout_name}"
|
"#{_implied_layout_name}"
|
||||||
else
|
else
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
ruby_eval
|
RUBY
|
||||||
end
|
end
|
||||||
self.class_eval { private :_layout }
|
self.class_eval { private :_layout }
|
||||||
end
|
end
|
||||||
|
@ -167,7 +167,7 @@ module AbstractController
|
||||||
# details<Hash{Symbol => Object}>:: A list of details to restrict
|
# details<Hash{Symbol => Object}>:: A list of details to restrict
|
||||||
# the lookup to. By default, layout lookup is limited to the
|
# the lookup to. By default, layout lookup is limited to the
|
||||||
# formats specified for the current request.
|
# formats specified for the current request.
|
||||||
def _layout_for_name(name, details = {:formats => formats})
|
def _layout_for_name(name, details)
|
||||||
name && _find_layout(name, details)
|
name && _find_layout(name, details)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ module AbstractController
|
||||||
def _find_layout(name, details)
|
def _find_layout(name, details)
|
||||||
# TODO: Make prefix actually part of details in ViewPath#find_by_parts
|
# TODO: Make prefix actually part of details in ViewPath#find_by_parts
|
||||||
prefix = details.key?(:prefix) ? details.delete(:prefix) : "layouts"
|
prefix = details.key?(:prefix) ? details.delete(:prefix) : "layouts"
|
||||||
view_paths.find(name, details, prefix)
|
find_template(name, details, :_prefix => prefix)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the default layout for this controller and a given set of details.
|
# Returns the default layout for this controller and a given set of details.
|
||||||
|
|
|
@ -120,6 +120,10 @@ module AbstractController
|
||||||
view_paths.find(name, details, options[:_prefix], options[:_partial])
|
view_paths.find(name, details, options[:_prefix], options[:_partial])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def template_exists?(name, details, options)
|
||||||
|
view_paths.exists?(name, details, options[:_prefix], options[:_partial])
|
||||||
|
end
|
||||||
|
|
||||||
def with_template_cache(name)
|
def with_template_cache(name)
|
||||||
yield
|
yield
|
||||||
end
|
end
|
||||||
|
|
|
@ -51,7 +51,7 @@ module ActionController
|
||||||
|
|
||||||
def method_for_action(action_name)
|
def method_for_action(action_name)
|
||||||
super || begin
|
super || begin
|
||||||
if view_paths.exists?(action_name.to_s, {:formats => formats, :locales => [I18n.locale]}, controller_path)
|
if template_exists?(action_name.to_s, {:formats => formats}, :_prefix => controller_path)
|
||||||
"default_render"
|
"default_render"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -191,7 +191,7 @@ module ActionController #:nodoc:
|
||||||
def memoized_find_layout(layout, formats) #:nodoc:
|
def memoized_find_layout(layout, formats) #:nodoc:
|
||||||
return layout if layout.nil? || layout.respond_to?(:render)
|
return layout if layout.nil? || layout.respond_to?(:render)
|
||||||
prefix = layout.to_s =~ /layouts\// ? nil : "layouts"
|
prefix = layout.to_s =~ /layouts\// ? nil : "layouts"
|
||||||
view_paths.find(layout.to_s, {:formats => formats}, prefix)
|
find_template(layout.to_s, {:formats => formats}, :_prefix => prefix)
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_layout(*args)
|
def find_layout(*args)
|
||||||
|
|
|
@ -148,10 +148,10 @@ module AbstractController
|
||||||
private
|
private
|
||||||
def self.layout(formats)
|
def self.layout(formats)
|
||||||
begin
|
begin
|
||||||
view_paths.find(name.underscore, {:formats => formats}, "layouts")
|
find_template(name.underscore, {:formats => formats}, :_prefix => "layouts")
|
||||||
rescue ActionView::MissingTemplate
|
rescue ActionView::MissingTemplate
|
||||||
begin
|
begin
|
||||||
view_paths.find("application", {:formats => formats}, "layouts")
|
find_template("application", {:formats => formats}, :_prefix => "layouts")
|
||||||
rescue ActionView::MissingTemplate
|
rescue ActionView::MissingTemplate
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue