aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r--actionpack/lib/action_view/base.rb41
-rw-r--r--actionpack/lib/action_view/helpers/capture_helper.rb8
-rw-r--r--actionpack/lib/action_view/partials.rb10
3 files changed, 32 insertions, 27 deletions
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb
index 18d03f5a0b..1b3cf5d95e 100644
--- a/actionpack/lib/action_view/base.rb
+++ b/actionpack/lib/action_view/base.rb
@@ -4,8 +4,8 @@ module ActionView #:nodoc:
class ActionViewError < StandardError #:nodoc:
end
- # Action View templates can be written in three ways. If the template file has a +.rhtml+ extension then it uses a mixture of ERb
- # (included in Ruby) and HTML. If the template file has a +.rxml+ extension then Jim Weirich's Builder::XmlMarkup library is used.
+ # Action View templates can be written in three ways. If the template file has a +.erb+ (or +.rhtml+) extension then it uses a mixture of ERb
+ # (included in Ruby) and HTML. If the template file has a +.builder+ (or +.rxml+) extension then Jim Weirich's Builder::XmlMarkup library is used.
# If the template file has a +.rjs+ extension then it will use ActionView::Helpers::PrototypeHelper::JavaScriptGenerator.
#
# = ERb
@@ -77,7 +77,7 @@ module ActionView #:nodoc:
# == Builder
#
# Builder templates are a more programmatic alternative to ERb. They are especially useful for generating XML content. An +XmlMarkup+ object
- # named +xml+ is automatically made available to templates with a +.rxml+ extension.
+ # named +xml+ is automatically made available to templates with a +.builder+ extension.
#
# Here are some basic examples:
#
@@ -246,7 +246,6 @@ module ActionView #:nodoc:
def render_file(template_path, use_full_path = true, local_assigns = {}) #:nodoc:
@first_render ||= template_path
template_path_without_extension, template_extension = path_and_extension(template_path)
-
if use_full_path
if template_extension
template_file_name = full_template_path(template_path_without_extension, template_extension)
@@ -280,7 +279,7 @@ module ActionView #:nodoc:
elsif options == :update
update_page(&block)
elsif options.is_a?(Hash)
- options = options.reverse_merge(:type => :rhtml, :locals => {}, :use_full_path => true)
+ options = options.reverse_merge(:type => :erb, :locals => {}, :use_full_path => true)
if options[:file]
render_file(options[:file], options[:use_full_path], options[:locals])
@@ -294,7 +293,7 @@ module ActionView #:nodoc:
end
end
- # Renders the +template+ which is given as a string as either rhtml or rxml depending on <tt>template_extension</tt>.
+ # Renders the +template+ which is given as a string as either erb or builder depending on <tt>template_extension</tt>.
# The hash in <tt>local_assigns</tt> is made available as local variables.
def render_template(template_extension, template, file_path = nil, local_assigns = {}) #:nodoc:
if handler = @@template_handlers[template_extension]
@@ -342,15 +341,21 @@ module ActionView #:nodoc:
def delegate_template_exists?(template_path)#:nodoc:
@@template_handlers.find { |k,| template_exists?(template_path, k) }
end
-
+
+ def one_of(template_path, *extensions)#:nodoc:
+ extensions.detect{|ext| template_exists?(template_path, ext)}
+ end
+
def erb_template_exists?(template_path)#:nodoc:
- template_exists?(template_path, :rhtml)
+ one_of(template_path, :erb, :rhtml)
end
-
+ alias :rhtml_template_exists? :erb_template_exists?
+
def builder_template_exists?(template_path)#:nodoc:
- template_exists?(template_path, :rxml)
+ one_of(template_path, :builder, :rxml)
end
-
+ alias :rxml_template_exists? :builder_template_exists?
+
def javascript_template_exists?(template_path)#:nodoc:
template_exists?(template_path, :rjs)
end
@@ -361,7 +366,7 @@ module ActionView #:nodoc:
template_exists?(template_file_name, template_file_extension)
else
cached_template_extension(template_path) ||
- %w(erb builder javascript delegate).any? do |template_type|
+ %w(erb rhtml builder rxml javascript delegate).any? do |template_type|
send("#{template_type}_template_exists?", template_path)
end
end
@@ -401,11 +406,11 @@ module ActionView #:nodoc:
def find_template_extension_for(template_path)
if match = delegate_template_exists?(template_path)
match.first.to_sym
- elsif erb_template_exists?(template_path): :rhtml
- elsif builder_template_exists?(template_path): :rxml
+ elsif extension = erb_template_exists?(template_path): extension
+ elsif extension = builder_template_exists?(template_path): extension
elsif javascript_template_exists?(template_path): :rjs
else
- raise ActionViewError, "No rhtml, rxml, rjs or delegate template found for #{template_path} in #{@view_paths.inspect}"
+ raise ActionViewError, "No erb, builder, rhtml, rxml, rjs or delegate template found for #{template_path} in #{@view_paths.inspect}"
end
end
@@ -464,7 +469,7 @@ module ActionView #:nodoc:
def create_template_source(extension, template, render_symbol, locals)
if template_requires_setup?(extension)
body = case extension.to_sym
- when :rxml
+ when :rxml, :builder
"controller.response.content_type ||= 'application/xml'\n" +
"xml = Builder::XmlMarkup.new(:indent => 2)\n" +
template
@@ -493,7 +498,7 @@ module ActionView #:nodoc:
end
def templates_requiring_setup
- %w(rxml rjs)
+ %w(builder rxml rjs)
end
def assign_method_name(extension, template, file_name)
@@ -523,7 +528,7 @@ module ActionView #:nodoc:
line_offset = @@template_args[render_symbol].size
if extension
case extension.to_sym
- when :rxml, :rjs
+ when :builder, :rxml, :rjs
line_offset += 2
end
end
diff --git a/actionpack/lib/action_view/helpers/capture_helper.rb b/actionpack/lib/action_view/helpers/capture_helper.rb
index 1d6ad56004..91cff4f981 100644
--- a/actionpack/lib/action_view/helpers/capture_helper.rb
+++ b/actionpack/lib/action_view/helpers/capture_helper.rb
@@ -14,7 +14,7 @@ module ActionView
# content_for("name") is a wrapper for capture which will
# make the fragment available by name to a yielding layout or template.
#
- # layout.rhtml:
+ # layout.erb:
#
# <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
# <head>
@@ -28,7 +28,7 @@ module ActionView
# </body>
# </html>
#
- # view.rhtml
+ # view.erb
#
# This page shows an alert box!
#
@@ -42,13 +42,13 @@ module ActionView
# instance variable. You can use this instance variable anywhere
# in your templates and even in your layout.
#
- # Example of capture being used in a .rhtml page:
+ # Example of capture being used in a .erb page:
#
# <% @greeting = capture do %>
# Welcome To my shiny new web page!
# <% end %>
#
- # Example of capture being used in a .rxml page:
+ # Example of capture being used in a .builder page:
#
# @greeting = capture do
# 'Welcome To my shiny new web page!'
diff --git a/actionpack/lib/action_view/partials.rb b/actionpack/lib/action_view/partials.rb
index 063ff5688d..c6049a4683 100644
--- a/actionpack/lib/action_view/partials.rb
+++ b/actionpack/lib/action_view/partials.rb
@@ -7,7 +7,7 @@ module ActionView
#
# <%= render :partial => "account" %>
#
- # This would render "advertiser/_account.rhtml" and pass the instance variable @account in as a local variable +account+ to
+ # This would render "advertiser/_account.erb" and pass the instance variable @account in as a local variable +account+ to
# the template for display.
#
# In another template for Advertiser#buy, we could have:
@@ -18,8 +18,8 @@ module ActionView
# <%= render :partial => "ad", :locals => { :ad => ad } %>
# <% end %>
#
- # This would first render "advertiser/_account.rhtml" with @buyer passed in as the local variable +account+, then render
- # "advertiser/_ad.rhtml" and pass the local variable +ad+ to the template for display.
+ # This would first render "advertiser/_account.erb" with @buyer passed in as the local variable +account+, then render
+ # "advertiser/_ad.erb" and pass the local variable +ad+ to the template for display.
#
# == Rendering a collection of partials
#
@@ -30,7 +30,7 @@ module ActionView
#
# <%= render :partial => "ad", :collection => @advertisements %>
#
- # This will render "advertiser/_ad.rhtml" and pass the local variable +ad+ to the template for display. An iteration counter
+ # This will render "advertiser/_ad.erb" and pass the local variable +ad+ to the template for display. An iteration counter
# will automatically be made available to the template with a name of the form +partial_name_counter+. In the case of the
# example above, the template would be fed +ad_counter+.
#
@@ -43,7 +43,7 @@ module ActionView
#
# <%= render :partial => "advertisement/ad", :locals => { :ad => @advertisement } %>
#
- # This will render the partial "advertisement/_ad.rhtml" regardless of which controller this is being called from.
+ # This will render the partial "advertisement/_ad.erb" regardless of which controller this is being called from.
module Partials
# Deprecated, use render :partial
def render_partial(partial_path, local_assigns = nil, deprecated_local_assigns = nil) #:nodoc: