Skip to content

Commit

Permalink
Allow anything that responds to render to be given as :template and u…
Browse files Browse the repository at this point in the history
…se find_template instead of find in views.
  • Loading branch information
josevalim committed Mar 12, 2010
1 parent 1684655 commit 2a12686
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 120 deletions.
2 changes: 1 addition & 1 deletion actionmailer/lib/action_mailer/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,7 @@ def collect_responses_and_parts_order(headers) #:nodoc:

each_template(templates_path, templates_name) do |template|
responses << {
:body => render(:_template => template),
:body => render(:template => template),
:content_type => template.mime_type.to_s
}
end
Expand Down
2 changes: 1 addition & 1 deletion actionmailer/lib/action_mailer/old_api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ def create_parts
@parts.unshift create_inline_part(@body)
elsif @parts.empty? || @parts.all? { |p| p.content_disposition =~ /^attachment/ }
lookup_context.find_all(@template, @mailer_name).each do |template|
@parts << create_inline_part(render(:_template => template), template.mime_type)
@parts << create_inline_part(render(:template => template), template.mime_type)
end

if @parts.size > 1
Expand Down
6 changes: 1 addition & 5 deletions actionpack/lib/abstract_controller/view_paths.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module ViewPaths
self._view_paths = ActionView::PathSet.new
end

delegate :template_exists?, :view_paths, :formats, :formats=,
delegate :find_template, :template_exists?, :view_paths, :formats, :formats=,
:locale, :locale=, :to => :lookup_context

# LookupContext is the object responsible to hold all information required to lookup
Expand All @@ -29,10 +29,6 @@ def prepend_view_path(path)
lookup_context.view_paths.unshift(*path)
end

def template_exists?(*args)
lookup_context.exists?(*args)
end

module ClassMethods
# Append a path to the list of view paths for this controller.
#
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_view/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ class << self
attr_accessor :base_path, :assigns, :template_extension, :lookup_context
attr_internal :captures, :request, :layout, :controller, :template, :config

delegate :find, :exists?, :formats, :formats=, :locale, :locale=,
delegate :find_template, :template_exists?, :formats, :formats=, :locale, :locale=,
:view_paths, :view_paths=, :with_fallbacks, :update_details, :to => :lookup_context

delegate :request_forgery_protection_token, :template, :params, :session, :cookies, :response, :headers,
Expand Down
2 changes: 2 additions & 0 deletions actionpack/lib/action_view/lookup_context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ def view_paths=(paths)
def find(name, prefix = nil, partial = false)
@view_paths.find(name, prefix, partial, details, details_key)
end
alias :find_template :find

def find_all(name, prefix = nil, partial = false)
@view_paths.find_all(name, prefix, partial, details, details_key)
Expand All @@ -78,6 +79,7 @@ def find_all(name, prefix = nil, partial = false)
def exists?(name, prefix = nil, partial = false)
@view_paths.exists?(name, prefix, partial, details, details_key)
end
alias :template_exists? :exists?

# Add fallbacks to the view paths. Useful in cases you are rendering a :file.
def with_fallbacks
Expand Down
4 changes: 2 additions & 2 deletions actionpack/lib/action_view/render/layouts.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ def _layout_for(name = nil, &block) #:nodoc:
def _find_layout(layout) #:nodoc:
begin
layout =~ /^\// ?
with_fallbacks { find(layout) } : find(layout)
with_fallbacks { find_template(layout) } : find_template(layout)
rescue ActionView::MissingTemplate => e
update_details(:formats => nil) do
raise unless exists?(layout)
raise unless template_exists?(layout)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_view/render/partials.rb
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ def collection
def find_template(path=@path)
return path unless path.is_a?(String)
prefix = @view.controller_path unless path.include?(?/)
@view.find(path, prefix, true)
@view.find_template(path, prefix, true)
end

def partial_path(object = @object)
Expand Down
9 changes: 4 additions & 5 deletions actionpack/lib/action_view/render/rendering.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,12 @@ def _determine_template(options) #:nodoc:
handler = Template.handler_class_for_extension(options[:type] || "erb")
Template.new(options[:inline], "inline template", handler, {})
elsif options.key?(:text)
Template::Text.new(options[:text], self.formats.try(:first))
elsif options.key?(:_template)
options[:_template]
Template::Text.new(options[:text], formats.try(:first))
elsif options.key?(:file)
with_fallbacks { find(options[:file], options[:prefix]) }
with_fallbacks { find_template(options[:file], options[:prefix]) }
elsif options.key?(:template)
find(options[:template], options[:prefix])
options[:template].respond_to?(:render) ?
options[:template] : find_template(options[:template], options[:prefix])
end
end

Expand Down
Loading

0 comments on commit 2a12686

Please sign in to comment.