diff options
author | José Valim <jose.valim@gmail.com> | 2010-11-18 20:22:14 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-11-18 20:22:14 +0100 |
commit | e3d8331c5b543ea7ea2024d05bd79526d11341c0 (patch) | |
tree | a360f8418b53e3963e38bfce209e488dd95c208b /actionpack | |
parent | be797750e6ce866ea08307f63bf35304a965c8d4 (diff) | |
download | rails-e3d8331c5b543ea7ea2024d05bd79526d11341c0.tar.gz rails-e3d8331c5b543ea7ea2024d05bd79526d11341c0.tar.bz2 rails-e3d8331c5b543ea7ea2024d05bd79526d11341c0.zip |
Revert "Remove deprecated form_for with strings or symbols"
This code was not deprecated. What was deprecated is the following:
form_for(:foo, @foo)
Which now should be rewritten as:
form_for(@foo, :as => :foo)
The following format is valid:
form_for(:foo)
This reverts commit be797750e6ce866ea08307f63bf35304a965c8d4.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_view/helpers/form_helper.rb | 12 | ||||
-rw-r--r-- | actionpack/test/template/erb/form_for_test.rb | 3 | ||||
-rw-r--r-- | actionpack/test/template/erb/helper.rb | 4 | ||||
-rw-r--r-- | actionpack/test/template/form_helper_test.rb | 33 |
4 files changed, 44 insertions, 8 deletions
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb index dec1ae6e4f..8c300ec745 100644 --- a/actionpack/lib/action_view/helpers/form_helper.rb +++ b/actionpack/lib/action_view/helpers/form_helper.rb @@ -303,9 +303,15 @@ module ActionView options[:html] ||= {} - object = record.is_a?(Array) ? record.last : record - object_name = options[:as] || ActiveModel::Naming.param_key(object) - apply_form_for_options!(record, options) + case record + when String, Symbol + object_name = record + object = nil + else + object = record.is_a?(Array) ? record.last : record + object_name = options[:as] || ActiveModel::Naming.param_key(object) + apply_form_for_options!(record, options) + end options[:html][:remote] = options.delete(:remote) builder = options[:parent_builder] = instantiate_builder(object_name, object, options, &proc) diff --git a/actionpack/test/template/erb/form_for_test.rb b/actionpack/test/template/erb/form_for_test.rb index 02f07496e0..e722b40a9a 100644 --- a/actionpack/test/template/erb/form_for_test.rb +++ b/actionpack/test/template/erb/form_for_test.rb @@ -1,11 +1,10 @@ require "abstract_unit" require "template/erb/helper" -require "controller/fake_models" module ERBTest class TagHelperTest < BlockTestCase test "form_for works" do - output = render_content "form_for(Post.new, :url => {:controller => 'blah', :action => 'update'})", "" + output = render_content "form_for(:staticpage, :url => {:controller => 'blah', :action => 'update'})", "" assert_match %r{<form.*action="/blah/update".*method="post">.*</form>}, output end end diff --git a/actionpack/test/template/erb/helper.rb b/actionpack/test/template/erb/helper.rb index fb9d0315f3..799f9e4036 100644 --- a/actionpack/test/template/erb/helper.rb +++ b/actionpack/test/template/erb/helper.rb @@ -4,8 +4,6 @@ module ERBTest include ActionView::Helpers::TagHelper include ActionView::Helpers::JavaScriptHelper include ActionView::Helpers::FormHelper - include ActionView::Context - include ActionController::RecordIdentifier attr_accessor :output_buffer, :controller @@ -22,4 +20,4 @@ module ERBTest "<%= #{str} do %>#{rest}<% end %>" end end -end +end
\ No newline at end of file diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb index 7179ae4e9c..2c60096475 100644 --- a/actionpack/test/template/form_helper_test.rb +++ b/actionpack/test/template/form_helper_test.rb @@ -781,6 +781,23 @@ class FormHelperTest < ActionView::TestCase assert_dom_equal expected, output_buffer end + def test_form_for_without_object + form_for(:post, :html => { :id => 'create-post' }) do |f| + concat f.text_field(:title) + concat f.text_area(:body) + concat f.check_box(:secret) + end + + expected = whole_form("/", "create-post") do + "<input name='post[title]' size='30' type='text' id='post_title' value='Hello World' />" + + "<textarea name='post[body]' id='post_body' rows='20' cols='40'>Back to the hill and over it again!</textarea>" + + "<input name='post[secret]' type='hidden' value='0' />" + + "<input name='post[secret]' checked='checked' type='checkbox' id='post_secret' value='1' />" + end + + assert_dom_equal expected, output_buffer + end + def test_form_for_with_index form_for(@post, :as => "post[]") do |f| concat f.label(:title) @@ -850,6 +867,22 @@ class FormHelperTest < ActionView::TestCase I18n.locale = old_locale end + def test_submit_without_object_and_locale_strings + old_locale, I18n.locale = I18n.locale, :submit + + form_for(:post) do |f| + concat f.submit :class => "extra" + end + + expected = whole_form do + "<input name='commit' class='extra' id='post_submit' type='submit' value='Save changes' />" + end + + assert_dom_equal expected, output_buffer + ensure + I18n.locale = old_locale + end + def test_submit_with_object_and_nested_lookup old_locale, I18n.locale = I18n.locale, :submit |