Merge remote-tracking branch 'origin/master' into rails_4
Conflicts: Gemfile Gemfile.lock gemfiles/Gemfile-rails.3.0.x gemfiles/Gemfile-rails.3.1.x
This commit is contained in:
commit
db7676bc38
|
@ -12,6 +12,8 @@
|
|||
* Generates additional wrapper class based on object + attribute name.
|
||||
([@lucasmazza](https://github/lucasmazza))
|
||||
Closes [#576](https://github.com/plataformatec/simple_form/issues/576).
|
||||
* Allow `input_field` to work with `:defaults` options.
|
||||
([@smidwap](https://github.com/smidwap))
|
||||
|
||||
### bug fix
|
||||
* Do not lookup for hints if it was explicitly given false.
|
||||
|
|
|
@ -134,6 +134,8 @@ module SimpleForm
|
|||
def input_field(attribute_name, options={})
|
||||
options = options.dup
|
||||
options[:input_html] = options.except(:as, :collection, :label_method, :value_method)
|
||||
options = @defaults.deep_dup.deep_merge(options) if @defaults
|
||||
|
||||
SimpleForm::Wrappers::Root.new([:input], :wrapper => false).render find_input(attribute_name, options)
|
||||
end
|
||||
|
||||
|
|
|
@ -306,50 +306,66 @@ class FormBuilderTest < ActionView::TestCase
|
|||
end
|
||||
|
||||
# DEFAULT OPTIONS
|
||||
test 'builder should receive a default argument and pass it to the inputs' do
|
||||
[:input, :input_field].each do |method|
|
||||
test "builder should receive a default argument and pass it to the inputs when calling '#{method}'" do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class' } } do |f|
|
||||
f.input :name
|
||||
f.send(method, :name)
|
||||
end
|
||||
assert_select 'input.default_class'
|
||||
end
|
||||
|
||||
test 'builder should receive a default argument and pass it to the inputs, respecting the specific options' do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class' } } do |f|
|
||||
f.input :name, :input_html => { :id => 'specific_id' }
|
||||
end
|
||||
assert_select 'input.default_class#specific_id'
|
||||
end
|
||||
|
||||
test 'builder should receive a default argument and pass it to the inputs, overwriting the defaults with specific options' do
|
||||
test "builder should receive a default argument and pass it to the inputs without changing the defaults when calling '#{method}'" do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class', :id => 'default_id' } } do |f|
|
||||
f.input :name, :input_html => { :id => 'specific_id' }
|
||||
end
|
||||
assert_select 'input.default_class#specific_id'
|
||||
end
|
||||
|
||||
test 'builder should receive a default argument and pass it to the inputs without changing the defaults' do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class', :id => 'default_id' } } do |f|
|
||||
concat(f.input :name)
|
||||
concat(f.input :credit_limit)
|
||||
concat(f.send(method, :name))
|
||||
concat(f.send(method, :credit_limit))
|
||||
end
|
||||
|
||||
assert_select "input.string.default_class[name='user[name]']"
|
||||
assert_no_select "input.string[name='user[credit_limit]']"
|
||||
end
|
||||
|
||||
test 'builder should receive a default argument and pass it to the inputs and nested form' do
|
||||
test "builder should receive a default argument and pass it to the inputs and nested form when calling '#{method}'" do
|
||||
@user.company = Company.new(1, 'Empresa')
|
||||
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class' } } do |f|
|
||||
concat(f.input :name)
|
||||
concat(f.send(method, :name))
|
||||
concat(f.simple_fields_for(:company) do |company_form|
|
||||
concat(company_form.input :name)
|
||||
concat(company_form.send(method, :name))
|
||||
end)
|
||||
end
|
||||
|
||||
assert_select "input.string.default_class[name='user[name]']"
|
||||
assert_select "input.string.default_class[name='user[company_attributes][name]']"
|
||||
end
|
||||
end
|
||||
|
||||
test "builder should receive a default argument and pass it to the inputs when calling 'input', respecting the specific options" do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class' } } do |f|
|
||||
f.input :name, :input_html => { :id => 'specific_id' }
|
||||
end
|
||||
assert_select 'input.default_class#specific_id'
|
||||
end
|
||||
|
||||
test "builder should receive a default argument and pass it to the inputs when calling 'input_field', respecting the specific options" do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class' } } do |f|
|
||||
f.input_field :name, :id => 'specific_id'
|
||||
end
|
||||
assert_select 'input.default_class#specific_id'
|
||||
end
|
||||
|
||||
test "builder should receive a default argument and pass it to the inputs when calling 'input', overwriting the defaults with specific options" do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class', :id => 'default_id' } } do |f|
|
||||
f.input :name, :input_html => { :id => 'specific_id' }
|
||||
end
|
||||
assert_select 'input.default_class#specific_id'
|
||||
end
|
||||
|
||||
test "builder should receive a default argument and pass it to the inputs when calling 'input_field', overwriting the defaults with specific options" do
|
||||
with_concat_form_for @user, :defaults => { :input_html => { :class => 'default_class', :id => 'default_id' } } do |f|
|
||||
f.input_field :name, :id => 'specific_id'
|
||||
end
|
||||
assert_select 'input.default_class#specific_id'
|
||||
end
|
||||
|
||||
# WITHOUT OBJECT
|
||||
test 'builder should generate properly when object is not present' do
|
||||
|
|
Loading…
Reference in New Issue