mirror of
https://github.com/github/rails.git
synced 2026-01-31 09:18:17 -05:00
Add error_messages and error_message_on to the default FormBuilder. Closes #6939 [nik.wakelin]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6040 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -445,6 +445,14 @@ module ActionView
|
||||
def radio_button(method, tag_value, options = {})
|
||||
@template.radio_button(@object_name, method, tag_value, options.merge(:object => @object))
|
||||
end
|
||||
|
||||
def error_message_on(method, prepend_text = "", append_text = "", css_class = "formError")
|
||||
@template.error_message_on(@object_name, method, prepend_text, append_text, css_class)
|
||||
end
|
||||
|
||||
def error_messages(options = {})
|
||||
@template.error_messages_for(@object_name, options)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ class FormHelperTest < Test::Unit::TestCase
|
||||
include ActionView::Helpers::UrlHelper
|
||||
include ActionView::Helpers::TagHelper
|
||||
include ActionView::Helpers::TextHelper
|
||||
include ActionView::Helpers::ActiveRecordHelper
|
||||
|
||||
silence_warnings do
|
||||
Post = Struct.new("Post", :title, :author_name, :body, :secret, :written_on, :cost)
|
||||
@@ -18,8 +19,14 @@ class FormHelperTest < Test::Unit::TestCase
|
||||
|
||||
def setup
|
||||
@post = Post.new
|
||||
def @post.errors() Class.new{ def on(field) field == "author_name" end }.new end
|
||||
|
||||
def @post.errors()
|
||||
Class.new{
|
||||
def on(field); "can't be empty" if field == "author_name"; end
|
||||
def empty?() false end
|
||||
def count() 1 end
|
||||
def full_messages() [ "Author name can't be empty" ] end
|
||||
}.new
|
||||
end
|
||||
def @post.id; 123; end
|
||||
def @post.id_before_type_cast; 123; end
|
||||
|
||||
@@ -447,6 +454,23 @@ class FormHelperTest < Test::Unit::TestCase
|
||||
ensure
|
||||
ActionView::Base.default_form_builder = old_default_form_builder
|
||||
end
|
||||
|
||||
def test_default_form_builder_with_active_record_helpers
|
||||
|
||||
_erbout = ''
|
||||
form_for(:post, @post) do |f|
|
||||
_erbout.concat f.error_message_on('author_name')
|
||||
_erbout.concat f.error_messages
|
||||
end
|
||||
|
||||
expected = %(<form action='http://www.example.com' method='post'>) +
|
||||
%(<div class='formError'>can't be empty</div>) +
|
||||
%(<div class="errorExplanation" id="errorExplanation"><h2>1 error prohibited this post from being saved</h2><p>There were problems with the following fields:</p><ul><li>Author name can't be empty</li></ul></div>) +
|
||||
%(</form>)
|
||||
|
||||
assert_dom_equal expected, _erbout
|
||||
|
||||
end
|
||||
|
||||
# Perhaps this test should be moved to prototype helper tests.
|
||||
def test_remote_form_for_with_labelled_builder
|
||||
|
||||
Reference in New Issue
Block a user