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
|
||||
raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil"
|
||||
when nil
|
||||
self.class_eval <<-ruby_eval, __FILE__, __LINE__ + 1
|
||||
self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
||||
def _layout(details)
|
||||
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}"
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
end
|
||||
ruby_eval
|
||||
RUBY
|
||||
end
|
||||
self.class_eval { private :_layout }
|
||||
end
|
||||
|
@ -167,7 +167,7 @@ module AbstractController
|
|||
# details<Hash{Symbol => Object}>:: A list of details to restrict
|
||||
# the lookup to. By default, layout lookup is limited to the
|
||||
# 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)
|
||||
end
|
||||
|
||||
|
@ -183,7 +183,7 @@ module AbstractController
|
|||
def _find_layout(name, details)
|
||||
# TODO: Make prefix actually part of details in ViewPath#find_by_parts
|
||||
prefix = details.key?(:prefix) ? details.delete(:prefix) : "layouts"
|
||||
view_paths.find(name, details, prefix)
|
||||
find_template(name, details, :_prefix => prefix)
|
||||
end
|
||||
|
||||
# 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])
|
||||
end
|
||||
|
||||
def template_exists?(name, details, options)
|
||||
view_paths.exists?(name, details, options[:_prefix], options[:_partial])
|
||||
end
|
||||
|
||||
def with_template_cache(name)
|
||||
yield
|
||||
end
|
||||
|
|
|
@ -51,7 +51,7 @@ module ActionController
|
|||
|
||||
def method_for_action(action_name)
|
||||
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"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -191,7 +191,7 @@ module ActionController #:nodoc:
|
|||
def memoized_find_layout(layout, formats) #:nodoc:
|
||||
return layout if layout.nil? || layout.respond_to?(:render)
|
||||
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
|
||||
|
||||
def find_layout(*args)
|
||||
|
|
|
@ -148,10 +148,10 @@ module AbstractController
|
|||
private
|
||||
def self.layout(formats)
|
||||
begin
|
||||
view_paths.find(name.underscore, {:formats => formats}, "layouts")
|
||||
find_template(name.underscore, {:formats => formats}, :_prefix => "layouts")
|
||||
rescue ActionView::MissingTemplate
|
||||
begin
|
||||
view_paths.find("application", {:formats => formats}, "layouts")
|
||||
find_template("application", {:formats => formats}, :_prefix => "layouts")
|
||||
rescue ActionView::MissingTemplate
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue