aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2005-06-12 05:33:23 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2005-06-12 05:33:23 +0000
commit3cb26e9cb3c1f3a069e7654988c650ca12322ede (patch)
tree1f60bc9bfb288f8fcb4c9576cdddf7b6708d2051 /actionpack
parentdedb9c8483fc916bb5fd40d7e8a35af5f8e7a90b (diff)
downloadrails-3cb26e9cb3c1f3a069e7654988c650ca12322ede.tar.gz
rails-3cb26e9cb3c1f3a069e7654988c650ca12322ede.tar.bz2
rails-3cb26e9cb3c1f3a069e7654988c650ca12322ede.zip
r2495@sedna: jeremy | 2005-05-27 22:07:18 -0700
Branch to have scaffold use new render methods r2496@sedna: jeremy | 2005-05-28 10:50:51 -0700 axe unused process_request method r2497@sedna: jeremy | 2005-05-28 10:51:58 -0700 sanity assertions in process method check that @controller, @request, @response are set r2498@sedna: jeremy | 2005-05-28 10:53:42 -0700 clean up escaping. use instance_variable_get instead of instance_eval. put id in form action instead of hidden input (like the generated scaffolding) r2499@sedna: jeremy | 2005-05-28 10:54:46 -0700 clean up interpolation, remove tabs from stylesheet r2500@sedna: jeremy | 2005-05-28 10:56:40 -0700 modernize dynamic scaffolding. use params[:id] instead of @params[id]. use consolidated render method instead of render_action, render_file, etc. use builtin inflections rather than module methods. r2501@sedna: jeremy | 2005-05-28 11:00:26 -0700 modernize generated scaffolding. use new-style assertions; use params[:id] instead of @params[id]; use consolidated render method instead of render_* r2542@sedna: jeremy | 2005-06-12 02:24:06 -0700 use :id => model instead of :id => model.id. clean up the form helper method. use flash[:notice] instead of flash['notice']. r2543@sedna: jeremy | 2005-06-12 02:33:22 -0700 whitespace r2544@sedna: jeremy | 2005-06-12 02:56:57 -0700 update changelogs r2545@sedna: jeremy | 2005-06-12 03:26:23 -0700 test dynamic form help when @post is not a new record r2546@sedna: jeremy | 2005-06-12 03:44:14 -0700 touch up TestCase#process sanity assertions git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1404 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG6
-rw-r--r--actionpack/lib/action_controller/scaffolding.rb53
-rw-r--r--actionpack/lib/action_controller/templates/scaffolds/edit.rhtml4
-rw-r--r--actionpack/lib/action_controller/templates/scaffolds/layout.rhtml38
-rw-r--r--actionpack/lib/action_controller/templates/scaffolds/list.rhtml6
-rw-r--r--actionpack/lib/action_controller/templates/scaffolds/new.rhtml4
-rw-r--r--actionpack/lib/action_controller/templates/scaffolds/show.rhtml2
-rw-r--r--actionpack/lib/action_controller/test_process.rb5
-rw-r--r--actionpack/lib/action_view/helpers/active_record_helper.rb26
-rw-r--r--actionpack/test/template/active_record_helper_test.rb29
10 files changed, 102 insertions, 71 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 081abbd11a..e1a62c8713 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,11 @@
*SVN*
+* Modernize scaffolding to match the generator: use the new render method and change style from the warty @params["id"] to the sleek params[:id]. #1367
+
+* Include :id in the action generated by the form helper method. Then, for example, the controller can do Model.find(params[:id]) for both edit and update actions. Updated scaffolding to take advantage. #1367
+
+* Add assertions with friendly messages to TestCase#process to ensure that @controller, @request, and @response are set. #1367
+
* Arrays sent via multipart posts are converted to strings #1032 [dj@omelia.org]
* render(:layout => true) is a synonym for render(:layout => nil)
diff --git a/actionpack/lib/action_controller/scaffolding.rb b/actionpack/lib/action_controller/scaffolding.rb
index 4faa23cdf3..3435ce5108 100644
--- a/actionpack/lib/action_controller/scaffolding.rb
+++ b/actionpack/lib/action_controller/scaffolding.rb
@@ -27,12 +27,12 @@ module ActionController
# end
#
# def show
- # @entry = Entry.find(@params["id"])
+ # @entry = Entry.find(params[:id])
# render_scaffold
# end
#
# def destroy
- # Entry.find(@params["id"]).destroy
+ # Entry.find(params[:id]).destroy
# redirect_to :action => "list"
# end
#
@@ -42,9 +42,9 @@ module ActionController
# end
#
# def create
- # @entry = Entry.new(@params["entry"])
+ # @entry = Entry.new(params[:entry])
# if @entry.save
- # flash["notice"] = "Entry was successfully created"
+ # flash[:notice] = "Entry was successfully created"
# redirect_to :action => "list"
# else
# render_scaffold('new')
@@ -52,17 +52,17 @@ module ActionController
# end
#
# def edit
- # @entry = Entry.find(@params["id"])
+ # @entry = Entry.find(params[:id])
# render_scaffold
# end
#
# def update
- # @entry = Entry.find(@params["entry"]["id"])
- # @entry.attributes = @params["entry"]
+ # @entry = Entry.find(params[:id])
+ # @entry.attributes = params[:entry]
#
# if @entry.save
- # flash["notice"] = "Entry was successfully updated"
- # redirect_to :action => "show/" + @entry.id.to_s
+ # flash[:notice] = "Entry was successfully updated"
+ # redirect_to :action => "show", :id => @entry
# else
# render_scaffold('edit')
# end
@@ -84,9 +84,9 @@ module ActionController
def scaffold(model_id, options = {})
validate_options([ :class_name, :suffix ], options.keys)
- singular_name = model_id.id2name
- class_name = options[:class_name] || Inflector.camelize(singular_name)
- plural_name = Inflector.pluralize(singular_name)
+ singular_name = model_id.to_s
+ class_name = options[:class_name] || singular_name.camelize
+ plural_name = singular_name.pluralize
suffix = options[:suffix] ? "_#{singular_name}" : ""
unless options[:suffix]
@@ -104,12 +104,12 @@ module ActionController
end
def show#{suffix}
- @#{singular_name} = #{class_name}.find(@params["id"])
+ @#{singular_name} = #{class_name}.find(params[:id])
render#{suffix}_scaffold
end
def destroy#{suffix}
- #{class_name}.find(@params["id"]).destroy
+ #{class_name}.find(params[:id]).destroy
redirect_to :action => "list#{suffix}"
end
@@ -119,9 +119,9 @@ module ActionController
end
def create#{suffix}
- @#{singular_name} = #{class_name}.new(@params["#{singular_name}"])
+ @#{singular_name} = #{class_name}.new(params[:#{singular_name}])
if @#{singular_name}.save
- flash["notice"] = "#{class_name} was successfully created"
+ flash[:notice] = "#{class_name} was successfully created"
redirect_to :action => "list#{suffix}"
else
render#{suffix}_scaffold('new')
@@ -129,17 +129,17 @@ module ActionController
end
def edit#{suffix}
- @#{singular_name} = #{class_name}.find(@params["id"])
+ @#{singular_name} = #{class_name}.find(params[:id])
render#{suffix}_scaffold
end
def update#{suffix}
- @#{singular_name} = #{class_name}.find(@params["#{singular_name}"]["id"])
- @#{singular_name}.attributes = @params["#{singular_name}"]
+ @#{singular_name} = #{class_name}.find(params[:id])
+ @#{singular_name}.attributes = params[:#{singular_name}]
if @#{singular_name}.save
- flash["notice"] = "#{class_name} was successfully updated"
- redirect_to :action => "show#{suffix}", :id => @#{singular_name}.id.to_s
+ flash[:notice] = "#{class_name} was successfully updated"
+ redirect_to :action => "show#{suffix}", :id => @#{singular_name}
else
render#{suffix}_scaffold('edit')
end
@@ -148,7 +148,7 @@ module ActionController
private
def render#{suffix}_scaffold(action = caller_method_name(caller))
if template_exists?("\#{self.class.controller_path}/\#{action}")
- render_action(action)
+ render(:action => action)
else
@scaffold_class = #{class_name}
@scaffold_singular_name, @scaffold_plural_name = "#{singular_name}", "#{plural_name}"
@@ -156,10 +156,15 @@ module ActionController
add_instance_variables_to_assigns
@content_for_layout = @template.render_file(scaffold_path(action.sub(/#{suffix}$/, "")), false)
- self.active_layout ? render_file(self.active_layout, "200 OK", true) : render_file(scaffold_path("layout"))
+
+ if active_layout?
+ render :file => active_layout, :use_full_path => true
+ else
+ render :file => scaffold_path("layout")
+ end
end
end
-
+
def scaffold_path(template_name)
File.dirname(__FILE__) + "/templates/scaffolds/" + template_name + ".rhtml"
end
diff --git a/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml b/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml
index 31e15f7501..63dff602a1 100644
--- a/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml
+++ b/actionpack/lib/action_controller/templates/scaffolds/edit.rhtml
@@ -1,7 +1,7 @@
<h1>Editing <%= @scaffold_singular_name %></h1>
<%= error_messages_for(@scaffold_singular_name) %>
-<%= form(@scaffold_singular_name, :action => "update" + @scaffold_suffix) %>
+<%= form(@scaffold_singular_name, :action => "update#{@scaffold_suffix}") %>
-<%= link_to "Show", :action => "show#{@scaffold_suffix}", :id => instance_variable_get("@#{@scaffold_singular_name}").id %> |
+<%= link_to "Show", :action => "show#{@scaffold_suffix}", :id => instance_variable_get("@#{@scaffold_singular_name}") %> |
<%= link_to "Back", :action => "list#{@scaffold_suffix}" %>
diff --git a/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml b/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml
index 300aa1d77a..80996985d2 100644
--- a/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml
+++ b/actionpack/lib/action_controller/templates/scaffolds/layout.rhtml
@@ -28,40 +28,40 @@
#ErrorExplanation {
width: 400px;
- border: 2px solid 'red';
- padding: 7px;
- padding-bottom: 12px;
- margin-bottom: 20px;
- background-color: #f0f0f0;
+ border: 2px solid 'red';
+ padding: 7px;
+ padding-bottom: 12px;
+ margin-bottom: 20px;
+ background-color: #f0f0f0;
}
#ErrorExplanation h2 {
- text-align: left;
- font-weight: bold;
- padding: 5px 5px 5px 15px;
- font-size: 12px;
- margin: -7px;
- background-color: #c00;
- color: #fff;
+ text-align: left;
+ font-weight: bold;
+ padding: 5px 5px 5px 15px;
+ font-size: 12px;
+ margin: -7px;
+ background-color: #c00;
+ color: #fff;
}
#ErrorExplanation p {
- color: #333;
- margin-bottom: 0;
- padding: 5px;
+ color: #333;
+ margin-bottom: 0;
+ padding: 5px;
}
#ErrorExplanation ul li {
- font-size: 12px;
- list-style: square;
+ font-size: 12px;
+ list-style: square;
}
</style>
</head>
<body>
-<p style="color: green"><%= flash['notice'] %></p>
+<p style="color: green"><%= flash[:notice] %></p>
<%= @content_for_layout %>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/actionpack/lib/action_controller/templates/scaffolds/list.rhtml b/actionpack/lib/action_controller/templates/scaffolds/list.rhtml
index 233e9da87d..d1196a1599 100644
--- a/actionpack/lib/action_controller/templates/scaffolds/list.rhtml
+++ b/actionpack/lib/action_controller/templates/scaffolds/list.rhtml
@@ -12,9 +12,9 @@
<% for column in @scaffold_class.content_columns %>
<td><%= entry.send(column.name) %></td>
<% end %>
- <td><%= link_to "Show", :action => "show#{@scaffold_suffix}", :id => entry.id %></td>
- <td><%= link_to "Edit", :action => "edit#{@scaffold_suffix}", :id => entry.id %></td>
- <td><%= link_to "Destroy", :action => "destroy#{@scaffold_suffix}", :id => entry.id, :confirm => "Are you sure?" %></td>
+ <td><%= link_to "Show", :action => "show#{@scaffold_suffix}", :id => entry %></td>
+ <td><%= link_to "Edit", :action => "edit#{@scaffold_suffix}", :id => entry %></td>
+ <td><%= link_to "Destroy", :action => "destroy#{@scaffold_suffix}", :id => entry, :confirm => "Are you sure?" %></td>
</tr>
<% end %>
</table>
diff --git a/actionpack/lib/action_controller/templates/scaffolds/new.rhtml b/actionpack/lib/action_controller/templates/scaffolds/new.rhtml
index 74db8468bd..66f6626f4e 100644
--- a/actionpack/lib/action_controller/templates/scaffolds/new.rhtml
+++ b/actionpack/lib/action_controller/templates/scaffolds/new.rhtml
@@ -1,6 +1,6 @@
<h1>New <%= @scaffold_singular_name %></h1>
<%= error_messages_for(@scaffold_singular_name) %>
-<%= form(@scaffold_singular_name, :action => "create" + @scaffold_suffix) %>
+<%= form(@scaffold_singular_name, :action => "create#{@scaffold_suffix}") %>
-<%= link_to "Back", :action => "list#{@scaffold_suffix}" %> \ No newline at end of file
+<%= link_to "Back", :action => "list#{@scaffold_suffix}" %>
diff --git a/actionpack/lib/action_controller/templates/scaffolds/show.rhtml b/actionpack/lib/action_controller/templates/scaffolds/show.rhtml
index 10c46342fd..46cdfdb493 100644
--- a/actionpack/lib/action_controller/templates/scaffolds/show.rhtml
+++ b/actionpack/lib/action_controller/templates/scaffolds/show.rhtml
@@ -5,5 +5,5 @@
</p>
<% end %>
-<%= link_to "Edit", :action => "edit#{@scaffold_suffix}", :id => instance_variable_get("@#{@scaffold_singular_name}").id %> |
+<%= link_to "Edit", :action => "edit#{@scaffold_suffix}", :id => instance_variable_get("@#{@scaffold_singular_name}") %> |
<%= link_to "Back", :action => "list#{@scaffold_suffix}" %>
diff --git a/actionpack/lib/action_controller/test_process.rb b/actionpack/lib/action_controller/test_process.rb
index 25ad540468..20022aab91 100644
--- a/actionpack/lib/action_controller/test_process.rb
+++ b/actionpack/lib/action_controller/test_process.rb
@@ -247,6 +247,11 @@ module Test
private
# execute the request and set/volley the response
def process(action, parameters = nil, session = nil, flash = nil)
+ # Sanity check for required instance variables so we can give an understandable error message.
+ %w(controller request response).each do |iv_name|
+ assert_not_nil instance_variable_get("@#{iv_name}"), "@#{iv_name} is nil: make sure you set it in your test's setup method."
+ end
+
@html_document = nil
@request.env['REQUEST_METHOD'] ||= "GET"
@request.action = action.to_s
diff --git a/actionpack/lib/action_view/helpers/active_record_helper.rb b/actionpack/lib/action_view/helpers/active_record_helper.rb
index f8a003e948..deb3effb1c 100644
--- a/actionpack/lib/action_view/helpers/active_record_helper.rb
+++ b/actionpack/lib/action_view/helpers/active_record_helper.rb
@@ -56,20 +56,22 @@ module ActionView
# form << content_tag("b", "Department")
# form << collection_select("department", "id", @departments, "id", "name")
# end
- def form(record_name, options = nil)
- options = (options || {}).symbolize_keys
- record = instance_eval("@#{record_name}")
+ def form(record_name, options = {})
+ record = instance_variable_get("@#{record_name}")
+ options = options.symbolize_keys
options[:action] ||= record.new_record? ? "create" : "update"
- action = url_for(:action => options[:action])
+ action = url_for(:action => options[:action], :id => record)
submit_value = options[:submit_value] || options[:action].gsub(/[^\w]/, '').capitalize
- id_field = record.new_record? ? "" : InstanceTag.new(record_name, "id", self).to_input_field_tag("hidden")
+ contents = ''
+ contents << hidden_field(record_name, :id) unless record.new_record?
+ contents << all_input_tags(record, record_name, options)
+ yield contents if block_given?
+ contents << submit_tag(submit_value)
- formtag = %(<form action="#{action}" method="post">#{id_field}) + all_input_tags(record, record_name, options)
- yield formtag if block_given?
- formtag + %(<input type="submit" value="#{submit_value}" /></form>)
+ content_tag('form', contents, :action => action, :method => 'post')
end
# Returns a string containing the error message attached to the +method+ on the +object+, if one exists.
@@ -83,8 +85,8 @@ module ActionView
# <%= error_message_on "post", "title", "Title simply ", " (or it won't work)", "inputError" %> =>
# <div class="inputError">Title simply can't be empty (or it won't work)</div>
def error_message_on(object, method, prepend_text = "", append_text = "", css_class = "formError")
- if errors = instance_eval("@#{object}").errors.on(method)
- "<div class=\"#{css_class}\">#{prepend_text + (errors.is_a?(Array) ? errors.first : errors) + append_text}</div>"
+ if errors = instance_variable_get("@#{object}").errors.on(method)
+ content_tag("div", "#{prepend_text}#{errors.is_a?(Array) ? errors.first : errors}#{append_text}", :class => css_class)
end
end
@@ -96,7 +98,7 @@ module ActionView
# * <tt>class</tt> - The class of the error div (default: errorExplanation)
def error_messages_for(object_name, options = {})
options = options.symbolize_keys
- object = instance_eval "@#{object_name}"
+ object = instance_variable_get("@#{object_name}")
unless object.errors.empty?
content_tag("div",
content_tag(
@@ -117,7 +119,7 @@ module ActionView
end
def default_input_block
- Proc.new { |record, column| "<p><label for=\"#{record}_#{column.name}\">#{column.human_name}</label><br />#{input(record, column.name)}</p>" }
+ Proc.new { |record, column| %(<p><label for="#{record}_#{column.name}">#{column.human_name}</label><br />#{input(record, column.name)}</p>) }
end
end
diff --git a/actionpack/test/template/active_record_helper_test.rb b/actionpack/test/template/active_record_helper_test.rb
index 5ee7221913..8a4e45b65f 100644
--- a/actionpack/test/template/active_record_helper_test.rb
+++ b/actionpack/test/template/active_record_helper_test.rb
@@ -4,6 +4,7 @@ require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_helper'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/text_helper'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/tag_helper'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/url_helper'
+require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_tag_helper'
# require File.dirname(__FILE__) + '/../../lib/action_view/helpers/active_record_helper'
class ActiveRecordHelperTest < Test::Unit::TestCase
@@ -12,6 +13,7 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
include ActionView::Helpers::TextHelper
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
+ include ActionView::Helpers::FormTagHelper
Post = Struct.new("Post", :title, :author_name, :body, :secret, :written_on)
Post.class_eval do
@@ -33,6 +35,7 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
end
def @post.new_record?() true end
+ def @post.to_param() nil end
def @post.column_for_attribute(attr_name)
Post.content_columns.select { |column| column.name == attr_name }.first
@@ -46,12 +49,12 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
@post.secret = 1
@post.written_on = Date.new(2004, 6, 15)
- @controller = Class.new do
- def url_for(options, *parameters_for_method_reference)
- options[:action] || options["action"]
- end
+ @controller = Object.new
+ def @controller.url_for(options, *parameters_for_method_reference)
+ options = options.symbolize_keys
+
+ [options[:action], options[:id].to_param].compact.join('/')
end
- @controller = @controller.new
end
def test_generic_input_tag
@@ -76,7 +79,17 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
def test_form_with_string
assert_equal(
- %(<form action="create" method="post"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20" wrap="virtual">Back to the hill and over it again!</textarea></div></p><input type="submit" value="Create" /></form>),
+ %(<form action="create" method="post"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20" wrap="virtual">Back to the hill and over it again!</textarea></div></p><input name="submit" type="submit" value="Create" /></form>),
+ form("post")
+ )
+
+ class << @post
+ def new_record?() false end
+ def to_param() id end
+ def id() 1 end
+ end
+ assert_equal(
+ %(<form action="update/1" method="post"><input id="post_id" name="post[id]" type="hidden" value="1" /><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20" wrap="virtual">Back to the hill and over it again!</textarea></div></p><input name="submit" type="submit" value="Update" /></form>),
form("post")
)
end
@@ -85,7 +98,7 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
def Post.content_columns() [ Column.new(:date, "written_on", "Written on") ] end
assert_equal(
- %(<form action="create" method="post"><p><label for="post_written_on">Written on</label><br /><select name="post[written_on(1i)]">\n<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n</select>\n<select name="post[written_on(2i)]">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select name="post[written_on(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n</p><input type="submit" value="Create" /></form>),
+ %(<form action="create" method="post"><p><label for="post_written_on">Written on</label><br /><select name="post[written_on(1i)]">\n<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n</select>\n<select name="post[written_on(2i)]">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select name="post[written_on(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n</p><input name="submit" type="submit" value="Create" /></form>),
form("post")
)
end
@@ -95,7 +108,7 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
@post.written_on = Time.gm(2004, 6, 15, 16, 30)
assert_equal(
- %(<form action="create" method="post"><p><label for="post_written_on">Written on</label><br /><select name="post[written_on(1i)]">\n<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n</select>\n<select name="post[written_on(2i)]">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select name="post[written_on(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n &mdash; <select name="post[written_on(4i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select name="post[written_on(5i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30" selected="selected">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</p><input type="submit" value="Create" /></form>),
+ %(<form action="create" method="post"><p><label for="post_written_on">Written on</label><br /><select name="post[written_on(1i)]">\n<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n</select>\n<select name="post[written_on(2i)]">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select name="post[written_on(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15" selected="selected">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n &mdash; <select name="post[written_on(4i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select name="post[written_on(5i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30" selected="selected">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</p><input name="submit" type="submit" value="Create" /></form>),
form("post")
)
end