Permalink
Browse files

Added .erb and .builder as preferred aliases to the now deprecated .r…

…html and .rxml extensions [Chad Fowler]. This is done to separate the renderer from the mime type. .erb templates are often used to render emails, atom, csv, whatever. So labeling them .rhtml doesn't make too much sense. The same goes for .rxml, which can be used to build everything from HTML to Atom to whatever. .rhtml and .rxml will continue to work until Rails 3.0, though. So this is a slow phasing out. All generators and examples will start using the new aliases, though.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6178 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 89cb34c commit e1056530665d5c8eed2c325157fbb88553eb2678 @dhh dhh committed Feb 20, 2007
Showing with 61 additions and 515 deletions.
  1. +2 −0 actionpack/CHANGELOG
  2. +4 −4 actionpack/README
  3. +0 −33 actionpack/examples/address_book/index.rhtml
  4. +0 −8 actionpack/examples/address_book/layout.rhtml
  5. +0 −14 actionpack/examples/debate/index.rhtml
  6. +0 −22 actionpack/examples/debate/new_topic.rhtml
  7. +0 −32 actionpack/examples/debate/topic.rhtml
  8. +9 −9 actionpack/lib/action_controller/base.rb
  9. +1 −1 actionpack/lib/action_controller/flash.rb
  10. +3 −3 actionpack/lib/action_controller/layout.rb
  11. +1 −1 actionpack/lib/action_controller/rescue.rb
  12. +2 −2 actionpack/lib/action_controller/scaffolding.rb
  13. +0 −44 actionpack/lib/action_controller/templates/rescues/_request_and_response.rhtml
  14. +0 −26 actionpack/lib/action_controller/templates/rescues/_trace.rhtml
  15. +0 −11 actionpack/lib/action_controller/templates/rescues/diagnostics.rhtml
  16. +0 −29 actionpack/lib/action_controller/templates/rescues/layout.rhtml
  17. +0 −2 actionpack/lib/action_controller/templates/rescues/missing_template.rhtml
  18. +0 −10 actionpack/lib/action_controller/templates/rescues/routing_error.rhtml
  19. +0 −21 actionpack/lib/action_controller/templates/rescues/template_error.rhtml
  20. +0 −2 actionpack/lib/action_controller/templates/rescues/unknown_action.rhtml
  21. +0 −7 actionpack/lib/action_controller/templates/scaffolds/edit.rhtml
  22. +0 −69 actionpack/lib/action_controller/templates/scaffolds/layout.rhtml
  23. +0 −27 actionpack/lib/action_controller/templates/scaffolds/list.rhtml
  24. +0 −6 actionpack/lib/action_controller/templates/scaffolds/new.rhtml
  25. +0 −9 actionpack/lib/action_controller/templates/scaffolds/show.rhtml
  26. +23 −18 actionpack/lib/action_view/base.rb
  27. +4 −4 actionpack/lib/action_view/helpers/capture_helper.rb
  28. +5 −5 actionpack/lib/action_view/partials.rb
  29. +2 −0 actionpack/test/controller/layout_test.rb
  30. +4 −4 actionpack/test/controller/new_render_test.rb
  31. +1 −1 actionpack/test/controller/rescue_test.rb
  32. +0 −1 actionpack/test/fixtures/addresses/list.rhtml
  33. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_cookies_ivar.rhtml
  34. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_cookies_method.rhtml
  35. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_flash_ivar.rhtml
  36. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_flash_method.rhtml
  37. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_headers_ivar.rhtml
  38. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_headers_method.rhtml
  39. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_params_ivar.rhtml
  40. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_params_method.rhtml
  41. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_request_ivar.rhtml
  42. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_request_method.rhtml
  43. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_response_ivar.rhtml
  44. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_response_method.rhtml
  45. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_session_ivar.rhtml
  46. +0 −1 actionpack/test/fixtures/deprecated_instance_variables/_session_method.rhtml
  47. +0 −1 actionpack/test/fixtures/fun/games/hello_world.rhtml
  48. +0 −3 actionpack/test/fixtures/layouts/builder.rxml
  49. +0 −1 actionpack/test/fixtures/layouts/standard.rhtml
  50. +0 −2 actionpack/test/fixtures/layouts/talk_from_action.rhtml
  51. +0 −2 actionpack/test/fixtures/layouts/yield.rhtml
  52. +0 −1 actionpack/test/fixtures/override/test/hello_world.rhtml
  53. +0 −1 actionpack/test/fixtures/scope/test/modgreet.rhtml
  54. +0 −1 actionpack/test/fixtures/test/_customer.rhtml
  55. +0 −1 actionpack/test/fixtures/test/_customer_greeting.rhtml
  56. +0 −1 actionpack/test/fixtures/test/_hash_object.rhtml
  57. +0 −1 actionpack/test/fixtures/test/_hello.rxml
  58. +0 −1 actionpack/test/fixtures/test/_partial_only.rhtml
  59. +0 −2 actionpack/test/fixtures/test/_person.rhtml
  60. +0 −2 actionpack/test/fixtures/test/action_talk_to_layout.rhtml
  61. +0 −2 actionpack/test/fixtures/test/block_content_for.rhtml
  62. +0 −4 actionpack/test/fixtures/test/capturing.rhtml
  63. +0 −2 actionpack/test/fixtures/test/content_for.rhtml
  64. +0 −1 actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.rhtml
  65. +0 −2 actionpack/test/fixtures/test/erb_content_for.rhtml
  66. +0 −1 actionpack/test/fixtures/test/greeting.rhtml
  67. +0 −4 actionpack/test/fixtures/test/hello.rxml
  68. +0 −1 actionpack/test/fixtures/test/hello_world.rhtml
  69. +0 −3 actionpack/test/fixtures/test/hello_world.rxml
  70. +0 −3 actionpack/test/fixtures/test/hello_world_container.rxml
  71. +0 −1 actionpack/test/fixtures/test/hello_world_with_layout_false.rhtml
  72. +0 −11 actionpack/test/fixtures/test/hello_xml_world.rxml
  73. +0 −1 actionpack/test/fixtures/test/list.rhtml
  74. +0 −4 actionpack/test/fixtures/test/non_erb_block_content_for.rxml
  75. +0 −4 actionpack/test/fixtures/test/potential_conflicts.rhtml
  76. +0 −1 actionpack/test/fixtures/test/render_file_with_ivar.rhtml
  77. +0 −1 actionpack/test/fixtures/test/render_file_with_locals.rhtml
  78. +0 −1 actionpack/test/fixtures/test/render_to_string_test.rhtml
  79. +0 −9 actionpack/test/fixtures/test/update_element_with_capture.rhtml
View
@@ -1,5 +1,7 @@
*SVN*
+* Added .erb and .builder as preferred aliases to the now deprecated .rhtml and .rxml extensions [Chad Fowler]. This is done to separate the renderer from the mime type. .erb templates are often used to render emails, atom, csv, whatever. So labeling them .rhtml doesn't make too much sense. The same goes for .rxml, which can be used to build everything from HTML to Atom to whatever. .rhtml and .rxml will continue to work until Rails 3.0, though. So this is a slow phasing out. All generators and examples will start using the new aliases, though.
+
* Added caching option to AssetTagHelper#stylesheet_link_tag and AssetTagHelper#javascript_include_tag [DHH]. Examples:
stylesheet_link_tag :all, :cache => true # when ActionController::Base.perform_caching is false =>
View
@@ -391,23 +391,23 @@ request from the web-server (like to be Apache).
And the templates look like this:
- weblog/layout.rhtml:
+ weblog/layout.erb:
<html><body>
<%= yield %>
</body></html>
- weblog/index.rhtml:
+ weblog/index.erb:
<% for post in @posts %>
<p><%= link_to(post.title, :action => "display", :id => post.id %></p>
<% end %>
- weblog/display.rhtml:
+ weblog/display.erb:
<p>
<b><%= post.title %></b><br/>
<b><%= post.content %></b>
</p>
- weblog/new.rhtml:
+ weblog/new.erb:
<%= form "post" %>
This simple setup will list all the posts in the system on the index page,
@@ -1,33 +0,0 @@
-<h1>Address Book</h1>
-
-<% if @people.empty? %>
- <p>No people in the address book yet</p>
-<% else %>
- <table>
- <tr><th>Name</th><th>Email Address</th><th>Phone Number</th></tr>
- <% for person in @people %>
- <tr><td><%= person.name %></td><td><%= person.email_address %></td><td><%= person.phone_number %></td></tr>
- <% end %>
- </table>
-<% end %>
-
-<form action="create_person">
- <p>
- Name:<br />
- <input type="text" name="person[name]">
- </p>
-
- <p>
- Email address:<br />
- <input type="text" name="person[email_address]">
- </p>
-
- <p>
- Phone number:<br />
- <input type="text" name="person[phone_number]">
- </p>
-
- <p>
- <input type="submit" value="Create Person">
- </p>
-</form>
@@ -1,8 +0,0 @@
-<html>
-<head>
- <title><%= @title || "Untitled" %></title>
-</head>
-<body>
-<%= @content_for_layout %>
-</body>
-</html>
@@ -1,14 +0,0 @@
-<html>
-<body>
-<h1>Topics</h1>
-
-<%= link_to "New topic", :action => "new_topic" %>
-
-<ul>
-<% for topic in @topics %>
- <li><%= link_to "#{topic.title} (#{topic.replies.length} replies)", :action => "topic", :path_params => { "id" => topic.id } %></li>
-<% end %>
-</ul>
-
-</body>
-</html>
@@ -1,22 +0,0 @@
-<html>
-<body>
-<h1>New topic</h1>
-
-<form action="<%= url_for(:action => "create_topic") %>" method="post">
- <p>
- Title:<br>
- <input type="text" name="topic[title]">
- </p>
-
- <p>
- Body:<br>
- <textarea name="topic[body]" style="width: 200px; height: 200px"></textarea>
- </p>
-
- <p>
- <input type="submit" value="Create topic">
- </p>
-</form>
-
-</body>
-</html>
@@ -1,32 +0,0 @@
-<html>
-<body>
-<h1><%= @topic.title %></h1>
-
-<p><%= @topic.body %></p>
-
-<%= link_to "Back to topics", :action => "index" %>
-
-<% unless @topic.replies.empty? %>
- <h2>Replies</h2>
- <ol>
- <% for reply in @topic.replies %>
- <li><%= reply.body %></li>
- <% end %>
- </ol>
-<% end %>
-
-<h2>Reply to this topic</h2>
-
-<form action="<%= url_for(:action => "create_reply") %>" method="post">
- <input type="hidden" name="reply[topic_id]" value="<%= @topic.id %>">
- <p>
- <textarea name="reply[body]" style="width: 200px; height: 200px"></textarea>
- </p>
-
- <p>
- <input type="submit" value="Create reply">
- </p>
-</form>
-
-</body>
-</html>
@@ -71,7 +71,7 @@ def initialize(message = nil)
#
# Actions, by default, render a template in the <tt>app/views</tt> directory corresponding to the name of the controller and action
# after executing code in the action. For example, the +index+ action of the +GuestBookController+ would render the
- # template <tt>app/views/guestbook/index.rhtml</tt> by default after populating the <tt>@entries</tt> instance variable.
+ # template <tt>app/views/guestbook/index.erb</tt> by default after populating the <tt>@entries</tt> instance variable.
#
# Unlike index, the sign action will not render a template. After performing its main purpose (creating a
# new entry in the guest book), it initiates a redirect instead. This redirect works by returning an external
@@ -662,7 +662,7 @@ def view_paths
# Template rendering works just like action rendering except that it takes a path relative to the template root.
# The current layout is automatically applied.
#
- # # Renders the template located in [TEMPLATE_ROOT]/weblog/show.r(html|xml) (in Rails, app/views/weblog/show.rhtml)
+ # # Renders the template located in [TEMPLATE_ROOT]/weblog/show.r(html|xml) (in Rails, app/views/weblog/show.erb)
# render :template => "weblog/show"
#
# === Rendering a file
@@ -671,12 +671,12 @@ def view_paths
# is assumed to be absolute, and the current layout is not applied.
#
# # Renders the template located at the absolute filesystem path
- # render :file => "/path/to/some/template.rhtml"
- # render :file => "c:/path/to/some/template.rhtml"
+ # render :file => "/path/to/some/template.erb"
+ # render :file => "c:/path/to/some/template.erb"
#
# # Renders a template within the current layout, and with a 404 status code
- # render :file => "/path/to/some/template.rhtml", :layout => true, :status => 404
- # render :file => "c:/path/to/some/template.rhtml", :layout => true, :status => 404
+ # render :file => "/path/to/some/template.erb", :layout => true, :status => 404
+ # render :file => "c:/path/to/some/template.erb", :layout => true, :status => 404
#
# # Renders a template relative to the template root and chooses the proper file extension
# render :file => "some/template", :use_full_path => true
@@ -734,7 +734,7 @@ def view_paths
# render :inline => "<%= 'hello, ' * 3 + 'again' %>"
#
# # Renders "<p>Good seeing you!</p>" using Builder
- # render :inline => "xml.p { 'Good seeing you!' }", :type => :rxml
+ # render :inline => "xml.p { 'Good seeing you!' }", :type => :builder
#
# # Renders "hello david"
# render :inline => "<%= 'hello ' + name %>", :locals => { :name => "david" }
@@ -863,7 +863,7 @@ def render_file(template_path, status = nil, use_full_path = false, locals = {})
render_text(@template.render_file(template_path, use_full_path, locals), status)
end
- def render_template(template, status = nil, type = :rhtml, local_assigns = {}) #:nodoc:
+ def render_template(template, status = nil, type = :erb, local_assigns = {}) #:nodoc:
add_variables_to_assigns
render_text(@template.render_template(type, template, nil, local_assigns), status)
end
@@ -1252,7 +1252,7 @@ def template_exempt_from_layout?(template_name = default_template_name)
def assert_existence_of_template_file(template_name)
unless template_exists?(template_name) || ignore_missing_templates
- full_template_path = @template.send(:full_template_path, template_name, 'rhtml')
+ full_template_path = @template.send(:full_template_path, template_name, 'erb')
template_type = (template_name =~ /layouts/i) ? 'layout' : 'template'
raise(MissingTemplate, "Missing #{template_type} #{full_template_path}")
end
@@ -16,7 +16,7 @@ module ActionController #:nodoc:
# end
# end
#
- # display.rhtml
+ # display.erb
# <% if flash[:notice] %><div class="notice"><%= flash[:notice] %></div><% end %>
#
# This example just places a string in the flash, but you can put any object in there. And of course, you can put as many
@@ -64,11 +64,11 @@ class << self
#
# If there is a template in <tt>app/views/layouts/</tt> with the same name as the current controller then it will be automatically
# set as that controller's layout unless explicitly told otherwise. Say you have a WeblogController, for example. If a template named
- # <tt>app/views/layouts/weblog.rhtml</tt> or <tt>app/views/layouts/weblog.rxml</tt> exists then it will be automatically set as
- # the layout for your WeblogController. You can create a layout with the name <tt>application.rhtml</tt> or <tt>application.rxml</tt>
+ # <tt>app/views/layouts/weblog.erb</tt> or <tt>app/views/layouts/weblog.builder</tt> exists then it will be automatically set as
+ # the layout for your WeblogController. You can create a layout with the name <tt>application.erb</tt> or <tt>application.builder</tt>
# and this will be set as the default controller if there is no layout with the same name as the current controller and there is
# no layout explicitly assigned with the +layout+ method. Nested controllers use the same folder structure for automatic layout.
- # assignment. So an Admin::WeblogController will look for a template named <tt>app/views/layouts/admin/weblog.rhtml</tt>.
+ # assignment. So an Admin::WeblogController will look for a template named <tt>app/views/layouts/admin/weblog.erb</tt>.
# Setting a layout explicitly will always override the automatic behaviour for the controller where the layout is set.
# Explicitly setting the layout in a parent class, though, will not override the child class's layout assignement if the child
# class has a layout with the same name.
@@ -152,7 +152,7 @@ def perform_action_with_rescue #:nodoc:
end
def rescues_path(template_name)
- "#{File.dirname(__FILE__)}/templates/rescues/#{template_name}.rhtml"
+ "#{File.dirname(__FILE__)}/templates/rescues/#{template_name}.erb"
end
def template_path_for_local_rescue(exception)
@@ -71,7 +71,7 @@ def self.included(base)
# end
# end
#
- # The <tt>render_scaffold</tt> method will first check to see if you've made your own template (like "weblog/show.rhtml" for
+ # The <tt>render_scaffold</tt> method will first check to see if you've made your own template (like "weblog/show.erb" for
# the show action) and if not, then render the generic template for that action. This gives you the possibility of using the
# scaffold while you're building your specific application. Start out with a totally generic setup, then replace one template
# and one action at a time while relying on the rest of the scaffolded templates and actions.
@@ -176,7 +176,7 @@ def render#{suffix}_scaffold(action=nil)
end
def scaffold_path(template_name)
- File.dirname(__FILE__) + "/templates/scaffolds/" + template_name + ".rhtml"
+ File.dirname(__FILE__) + "/templates/scaffolds/" + template_name + ".erb"
end
def caller_method_name(caller)
@@ -1,44 +0,0 @@
-<% unless @exception.blamed_files.blank? %>
- <% if (hide = @exception.blamed_files.length > 8) %>
- <a href="#" onclick="document.getElementById('blame_trace').style.display='block'; return false;">Show blamed files</a>
- <% end %>
- <pre id="blame_trace" <%='style="display:none"' if hide %>><code><%=h @exception.describe_blame %></code></pre>
-<% end %>
-
-<% if false %>
- <br /><br />
- <% begin %>
- <%= form_tag(request.request_uri, "method" => request.method) %>
- <input type="hidden" name="BP-RETRY" value="1" />
-
- <% for key, values in params %>
- <% next if key == "BP-RETRY" %>
- <% for value in Array(values) %>
- <input type="hidden" name="<%= key %>" value="<%= value %>" />
- <% end %>
- <% end %>
-
- <input type="submit" value="Retry with Breakpoint" />
- </form>
- <% rescue Exception => e %>
- <%=h "Couldn't render breakpoint link due to #{e.class} #{e.message}" %>
- <% end %>
-<% end %>
-
-<%
- clean_params = request.parameters.clone
- clean_params.delete("action")
- clean_params.delete("controller")
-
- request_dump = clean_params.empty? ? 'None' : clean_params.inspect.gsub(',', ",\n")
-%>
-
-<h2 style="margin-top: 30px">Request</h2>
-<p><b>Parameters</b>: <pre><%=h request_dump %></pre></p>
-
-<p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p>
-<div id="session_dump" style="display:none"><%= debug(request.session.instance_variable_get("@data")) %></div>
-
-
-<h2 style="margin-top: 30px">Response</h2>
-<p><b>Headers</b>: <pre><%=h response ? response.headers.inspect.gsub(',', ",\n") : 'None' %></pre></p>
@@ -1,26 +0,0 @@
-<%
- traces = [
- ["Application Trace", @exception.application_backtrace],
- ["Framework Trace", @exception.framework_backtrace],
- ["Full Trace", @exception.clean_backtrace]
- ]
- names = traces.collect {|name, trace| name}
-%>
-
-<p><code>RAILS_ROOT: <%= defined?(RAILS_ROOT) ? RAILS_ROOT : "unset" %></code></p>
-
-<div id="traces">
- <% names.each do |name| -%>
- <%
- show = "document.getElementById('#{name.gsub /\s/, '-'}').style.display='block';"
- hide = (names - [name]).collect {|hide_name| "document.getElementById('#{hide_name.gsub /\s/, '-'}').style.display='none';"}
- %>
- <a href="#" onclick="<%= hide %><%= show %>; return false;"><%= name %></a> <%= '|' unless names.last == name %>
- <% end -%>
-
- <% traces.each do |name, trace| -%>
- <div id="<%= name.gsub /\s/, '-' %>" style="display: <%= name == "Application Trace" ? 'block' : 'none' %>;">
- <pre><code><%= trace.join "\n" %></code></pre>
- </div>
- <% end -%>
-</div>
@@ -1,11 +0,0 @@
-<h1>
- <%=h @exception.class.to_s %>
- <% if request.parameters['controller'] %>
- in <%=h request.parameters['controller'].humanize %>Controller<% if request.parameters['action'] %>#<%=h request.parameters['action'] %><% end %>
- <% end %>
-</h1>
-<pre><%=h @exception.clean_message %></pre>
-
-<%= render_file(@rescues_path + "/_trace.rhtml", false) %>
-
-<%= render_file(@rescues_path + "/_request_and_response.rhtml", false) %>
@@ -1,29 +0,0 @@
-<html>
-<head>
- <title>Action Controller: Exception caught</title>
- <style>
- body { background-color: #fff; color: #333; }
-
- body, p, ol, ul, td {
- font-family: verdana, arial, helvetica, sans-serif;
- font-size: 13px;
- line-height: 18px;
- }
-
- pre {
- background-color: #eee;
- padding: 10px;
- font-size: 11px;
- }
-
- a { color: #000; }
- a:visited { color: #666; }
- a:hover { color: #fff; background-color:#000; }
- </style>
-</head>
-<body>
-
-<%= @contents %>
-
-</body>
-</html>
@@ -1,2 +0,0 @@
-<h1>Template is missing</h1>
-<p><%=h @exception.message %></p>
@@ -1,10 +0,0 @@
-<h1>Routing Error</h1>
-<p><pre><%=h @exception.message %></pre></p>
-<% unless @exception.failures.empty? %><p>
- <h2>Failure reasons:</h2>
- <ol>
- <% @exception.failures.each do |route, reason| %>
- <li><code><%=h route.inspect.gsub('\\', '') %></code> failed because <%=h reason.downcase %></li>
- <% end %>
- </ol>
-</p><% end %>
Oops, something went wrong.

0 comments on commit e105653

Please sign in to comment.