diff --git a/actionpack/lib/action_view/helpers/active_record_helper.rb b/actionpack/lib/action_view/helpers/active_record_helper.rb index 7c0dfda..c18a0ad 100644 --- a/actionpack/lib/action_view/helpers/active_record_helper.rb +++ b/actionpack/lib/action_view/helpers/active_record_helper.rb @@ -77,11 +77,11 @@ module ActionView options = options.symbolize_keys options[:action] ||= record.new_record? ? "create" : "update" - action = url_for(:action => options[:action], :id => record) + action = {:action => options[:action], :id => record} submit_value = options[:submit_value] || options[:action].gsub(/[^\w]/, '').capitalize - contents = form_tag({:action => action}, :method =>(options[:method] || 'post'), :enctype => options[:multipart] ? 'multipart/form-data': nil) + contents = form_tag(action, :method =>(options[:method] || 'post'), :enctype => options[:multipart] ? 'multipart/form-data': nil) contents << hidden_field(record_name, :id) unless record.new_record? contents << all_input_tags(record, record_name, options) yield contents if block_given? diff --git a/actionpack/test/template/active_record_helper_test.rb b/actionpack/test/template/active_record_helper_test.rb index b4b8cbe..09a2b24 100644 --- a/actionpack/test/template/active_record_helper_test.rb +++ b/actionpack/test/template/active_record_helper_test.rb @@ -122,7 +122,7 @@ class ActiveRecordHelperTest < ActionView::TestCase def @controller.url_for(options) options = options.symbolize_keys - [options[:action], options[:id].to_param].compact.join('/') + ['posts', options[:action], options[:id].to_param].compact.join('/') end end @@ -148,7 +148,7 @@ class ActiveRecordHelperTest < ActionView::TestCase def test_form_with_string assert_dom_equal( - %(


\n


), + %(


\n


), form("post") ) @@ -161,7 +161,7 @@ class ActiveRecordHelperTest < ActionView::TestCase end assert_dom_equal( - %(


\n


), + %(


\n


), form("post") ) end @@ -171,21 +171,33 @@ class ActiveRecordHelperTest < ActionView::TestCase @request_forgery_protection_token = 'authenticity_token' @form_authenticity_token = '123' assert_dom_equal( - %(


\n


), + %(


\n


), form("post") ) end def test_form_with_method_option assert_dom_equal( - %(


\n


), + %(


\n


), form("post", :method=>'get') ) end - def test_form_with_action_option + def test_form_with_action_option_on_new_record @response.body = form("post", :action => "sign") - assert_select "form[action=sign]" do |form| + assert_select "form[action=posts/sign]" do |form| + assert_select "input[type=submit][value=Sign]" + end + end + + def test_form_with_action_option_on_existing_record + def @post.new_record?() false end + def @post.id() 2000 end + def @post.to_param() id end + + @response.body = form("post", :action => 'sign') + assert_select "form[action=posts/sign/2000]" do |form| + assert_select "input[name='post[id]'][value=2000]" assert_select "input[type=submit][value=Sign]" end end @@ -196,7 +208,7 @@ class ActiveRecordHelperTest < ActionView::TestCase end assert_dom_equal( - %(


\n\n\n

), + %(


\n\n\n

), form("post") ) end @@ -208,7 +220,7 @@ class ActiveRecordHelperTest < ActionView::TestCase @post.written_on = Time.gm(2004, 6, 15, 16, 30) assert_dom_equal( - %(


\n\n\n — \n : \n

), + %(


\n\n\n — \n : \n

), form("post") ) end @@ -296,7 +308,7 @@ class ActiveRecordHelperTest < ActionView::TestCase def test_form_with_string_multipart assert_dom_equal( - %(


\n


), + %(


\n


), form("post", :multipart => true) ) end