Fallback to default label when block is provided

This commit is contained in:
Alex Kwiatkowski & Peter Jaros 2011-09-15 12:02:02 -04:00
parent 56c0b4f25c
commit c88efe3c0c
2 changed files with 11 additions and 3 deletions

View File

@ -273,7 +273,7 @@ module SimpleForm
# f.label :name, :id => "cool_label"
#
def label(attribute_name, *args)
return super if args.first.is_a?(String)
return super if args.first.is_a?(String) || block_given?
options = args.extract_options!
options[:label_html] = options.dup
options[:label] = options.delete(:label)

View File

@ -2,9 +2,9 @@
require 'test_helper'
class LabelTest < ActionView::TestCase
def with_label_for(object, *args)
def with_label_for(object, *args, &block)
with_concat_form_for(object) do |f|
f.label(*args)
f.label(*args, &block)
end
end
@ -34,6 +34,14 @@ class LabelTest < ActionView::TestCase
assert_no_select 'label.string'
end
test 'builder should fallback to default label when block is given' do
with_label_for @user, :name do
'Nome do usuário'
end
assert_select 'label', 'Nome do usuário'
assert_no_select 'label.string'
end
test 'builder allows label order to be changed' do
swap SimpleForm, :label_text => lambda { |l, r| "#{l}:" } do
with_label_for @user, :age