aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2010-08-01 19:32:22 -0300
committerSantiago Pastorino <santiago@wyeworks.com>2010-08-01 19:32:22 -0300
commitfb0bd8c1092db51888ec4bb72af6c595e13c31fa (patch)
tree22b264d2259043b1d4b922527cb2b611c3baf67a
parentf78de6864998369002a5b1906dad151b6c787c24 (diff)
downloadrails-fb0bd8c1092db51888ec4bb72af6c595e13c31fa.tar.gz
rails-fb0bd8c1092db51888ec4bb72af6c595e13c31fa.tar.bz2
rails-fb0bd8c1092db51888ec4bb72af6c595e13c31fa.zip
Makes form_helper use overriden model accessors
[#3374 state:committed]
-rw-r--r--actionpack/lib/action_view/helpers/form_helper.rb6
-rw-r--r--actionpack/test/template/form_helper_test.rb17
2 files changed, 20 insertions, 3 deletions
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb
index b0af836522..f8e60faa2a 100644
--- a/actionpack/lib/action_view/helpers/form_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_helper.rb
@@ -1005,9 +1005,9 @@ module ActionView
def value_before_type_cast(object, method_name)
unless object.nil?
- object.respond_to?(method_name + "_before_type_cast") ?
- object.send(method_name + "_before_type_cast") :
- object.send(method_name)
+ object.respond_to?(method_name) ?
+ object.send(method_name) :
+ object.send(method_name + "_before_type_cast")
end
end
diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb
index 9ddfa13c16..f248a38ae9 100644
--- a/actionpack/test/template/form_helper_test.rb
+++ b/actionpack/test/template/form_helper_test.rb
@@ -4,6 +4,16 @@ require 'controller/fake_models'
class FormHelperTest < ActionView::TestCase
tests ActionView::Helpers::FormHelper
+ class Developer
+ def name_before_type_cast
+ "David"
+ end
+
+ def name
+ "Santiago"
+ end
+ end
+
def form_for(*)
@output_buffer = super
end
@@ -233,6 +243,13 @@ class FormHelperTest < ActionView::TestCase
text_field("user", "email", :type => "email")
end
+ def test_text_field_from_a_user_defined_method
+ @developer = Developer.new
+ assert_dom_equal(
+ '<input id="developer_name" name="developer[name]" size="30" type="text" value="Santiago" />', text_field("developer", "name")
+ )
+ end
+
def test_check_box
assert_dom_equal(
'<input name="post[secret]" type="hidden" value="0" /><input checked="checked" id="post_secret" name="post[secret]" type="checkbox" value="1" />',