Fixed form_for regression (closes #3962) [t.lucas@toolmantim.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3666 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 841d596c
......@@ -122,7 +122,7 @@ module FormHelper
#
def form_for(object_name, object, options = {}, &proc)
raise ArgumentError, "Missing block" unless block_given?
concat(form_tag(options, options.delete(:html) || {}), proc.binding)
concat(form_tag(options.delete(:url) || {}, options.delete(:html) || {}), proc.binding)
fields_for(object_name, object, options, &proc)
concat('</form>', proc.binding)
end
......
......@@ -30,7 +30,9 @@ def @post.id_before_type_cast; 123; end
@post.written_on = Date.new(2004, 6, 15)
@controller = Class.new do
attr_reader :url_for_options
def url_for(options, *parameters_for_method_reference)
@url_for_options = options
"http://www.example.com"
end
end
......@@ -355,6 +357,23 @@ def test_form_for_with_html_options_adds_options_to_form_tag
assert_dom_equal expected, _erbout
end
def test_form_for_with_string_url_option
_erbout = ''
form_for(:post, @post, :url => 'http://www.otherdomain.com') do |f| end
assert_equal 'http://www.otherdomain.com', @controller.url_for_options
end
def test_form_for_with_hash_url_option
_erbout = ''
form_for(:post, @post, :url => {:controller => 'controller', :action => 'action'}) do |f| end
assert_equal 'controller', @controller.url_for_options[:controller]
assert_equal 'action', @controller.url_for_options[:action]
end
def test_remote_form_for_with_html_options_adds_options_to_form_tag
self.extend ActionView::Helpers::PrototypeHelper
_erbout = ''
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册