aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-14 00:24:30 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-14 01:07:03 +0100
commitd50bf47b008ae4c1a84ccc44e8fc7633bfffa650 (patch)
treeb85ac7597e6e1bc269f4cb721193aca7c2b515ee
parent8e0208f650eac23ee4b5c748d2de715344c5c629 (diff)
downloadrails-d50bf47b008ae4c1a84ccc44e8fc7633bfffa650.tar.gz
rails-d50bf47b008ae4c1a84ccc44e8fc7633bfffa650.tar.bz2
rails-d50bf47b008ae4c1a84ccc44e8fc7633bfffa650.zip
Call :to_model before working with the object.
-rw-r--r--actionpack/lib/action_view/helpers/form_helper.rb17
-rw-r--r--actionpack/test/template/form_helper_test.rb4
2 files changed, 13 insertions, 8 deletions
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb
index 00e12bd1e9..ef1c51d4e7 100644
--- a/actionpack/lib/action_view/helpers/form_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_helper.rb
@@ -1072,16 +1072,21 @@ module ActionView
@template.error_messages_for(@object_name, objectify_options(options))
end
- def submit(value = nil, options = {})
- value ||= begin
- key = @object ? (@object.new_record? ? :create : :update) : :submit
- model = if @object.class.respond_to?(:model_name)
- @object.class.model_name.human
+ def submit(value=nil, options={})
+ value, options = nil, value if value.is_a?(Hash)
+
+ unless value
+ object = @object.respond_to?(:to_model) ? @object.to_model : @object
+ key = object ? (object.new_record? ? :create : :update) : :submit
+
+ model = if object.class.respond_to?(:model_name)
+ object.class.model_name.human
else
@object_name.to_s.humanize
end
- I18n.t(:"helpers.submit.#{key}", :model => model, :default => "#{key.to_s.humanize} #{model}")
+ value = I18n.t(:"helpers.submit.#{key}", :model => model,
+ :default => "#{key.to_s.humanize} #{model}")
end
@template.submit_tag(value, options.reverse_merge(:id => "#{object_name}_submit"))
diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb
index c62bc6f4a8..2f6d97de3d 100644
--- a/actionpack/test/template/form_helper_test.rb
+++ b/actionpack/test/template/form_helper_test.rb
@@ -521,11 +521,11 @@ class FormHelperTest < ActionView::TestCase
old_locale, I18n.locale = I18n.locale, :submit
form_for(:post) do |f|
- concat f.submit
+ concat f.submit :class => "extra"
end
expected = "<form action='http://www.example.com' method='post'>" +
- "<input name='commit' id='post_submit' type='submit' value='Save changes' />" +
+ "<input name='commit' class='extra' id='post_submit' type='submit' value='Save changes' />" +
"</form>"
assert_dom_equal expected, output_buffer
ensure