mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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 be797750e6
.
This commit is contained in:
parent
be797750e6
commit
e3d8331c5b
4 changed files with 44 additions and 8 deletions
|
@ -303,9 +303,15 @@ module ActionView
|
||||||
|
|
||||||
options[:html] ||= {}
|
options[:html] ||= {}
|
||||||
|
|
||||||
|
case record
|
||||||
|
when String, Symbol
|
||||||
|
object_name = record
|
||||||
|
object = nil
|
||||||
|
else
|
||||||
object = record.is_a?(Array) ? record.last : record
|
object = record.is_a?(Array) ? record.last : record
|
||||||
object_name = options[:as] || ActiveModel::Naming.param_key(object)
|
object_name = options[:as] || ActiveModel::Naming.param_key(object)
|
||||||
apply_form_for_options!(record, options)
|
apply_form_for_options!(record, options)
|
||||||
|
end
|
||||||
|
|
||||||
options[:html][:remote] = options.delete(:remote)
|
options[:html][:remote] = options.delete(:remote)
|
||||||
builder = options[:parent_builder] = instantiate_builder(object_name, object, options, &proc)
|
builder = options[:parent_builder] = instantiate_builder(object_name, object, options, &proc)
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
require "abstract_unit"
|
require "abstract_unit"
|
||||||
require "template/erb/helper"
|
require "template/erb/helper"
|
||||||
require "controller/fake_models"
|
|
||||||
|
|
||||||
module ERBTest
|
module ERBTest
|
||||||
class TagHelperTest < BlockTestCase
|
class TagHelperTest < BlockTestCase
|
||||||
test "form_for works" do
|
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
|
assert_match %r{<form.*action="/blah/update".*method="post">.*</form>}, output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,8 +4,6 @@ module ERBTest
|
||||||
include ActionView::Helpers::TagHelper
|
include ActionView::Helpers::TagHelper
|
||||||
include ActionView::Helpers::JavaScriptHelper
|
include ActionView::Helpers::JavaScriptHelper
|
||||||
include ActionView::Helpers::FormHelper
|
include ActionView::Helpers::FormHelper
|
||||||
include ActionView::Context
|
|
||||||
include ActionController::RecordIdentifier
|
|
||||||
|
|
||||||
attr_accessor :output_buffer, :controller
|
attr_accessor :output_buffer, :controller
|
||||||
|
|
||||||
|
|
|
@ -781,6 +781,23 @@ class FormHelperTest < ActionView::TestCase
|
||||||
assert_dom_equal expected, output_buffer
|
assert_dom_equal expected, output_buffer
|
||||||
end
|
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
|
def test_form_for_with_index
|
||||||
form_for(@post, :as => "post[]") do |f|
|
form_for(@post, :as => "post[]") do |f|
|
||||||
concat f.label(:title)
|
concat f.label(:title)
|
||||||
|
@ -850,6 +867,22 @@ class FormHelperTest < ActionView::TestCase
|
||||||
I18n.locale = old_locale
|
I18n.locale = old_locale
|
||||||
end
|
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
|
def test_submit_with_object_and_nested_lookup
|
||||||
old_locale, I18n.locale = I18n.locale, :submit
|
old_locale, I18n.locale = I18n.locale, :submit
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue