simple_form 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of simple_form might be problematic. Click here for more details.
- data/CHANGELOG.md +21 -0
 - data/MIT-LICENSE +1 -1
 - data/README.md +149 -147
 - data/lib/generators/simple_form/templates/config/initializers/simple_form.rb.tt +3 -1
 - data/lib/generators/simple_form/templates/config/locales/simple_form.en.yml +7 -5
 - data/lib/simple_form/action_view_extensions/builder.rb +4 -2
 - data/lib/simple_form/components/hints.rb +2 -1
 - data/lib/simple_form/components/labels.rb +1 -1
 - data/lib/simple_form/components/min_max.rb +1 -0
 - data/lib/simple_form/error_notification.rb +1 -1
 - data/lib/simple_form/form_builder.rb +1 -1
 - data/lib/simple_form/inputs/base.rb +19 -2
 - data/lib/simple_form/inputs/boolean_input.rb +6 -1
 - data/lib/simple_form/version.rb +1 -1
 - data/test/action_view_extensions/builder_test.rb +6 -0
 - data/test/action_view_extensions/form_helper_test.rb +18 -18
 - data/test/form_builder/association_test.rb +3 -3
 - data/test/form_builder/error_notification_test.rb +1 -1
 - data/test/form_builder/general_test.rb +14 -0
 - data/test/form_builder/general_test.rb.orig +380 -0
 - data/test/form_builder/hint_test.rb +16 -0
 - data/test/form_builder/wrapper_test.rb +17 -4
 - data/test/inputs/boolean_input_test.rb +14 -0
 - data/test/inputs/discovery_test.rb +9 -1
 - data/test/inputs/numeric_input_test.rb +6 -0
 - data/test/inputs/string_input_test.rb +6 -0
 - data/test/support/discovery_inputs.rb +6 -0
 - data/test/support/misc_helpers.rb +11 -1
 - data/test/support/models.rb +7 -3
 - data/test/test_helper.rb +2 -5
 - metadata +20 -10
 - data/test/support/mock_response.rb +0 -14
 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,3 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## 2.0.2
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            ### enhancements
         
     | 
| 
      
 4 
     | 
    
         
            +
              * Add `:inline_label` option to nested booleans to display text inline with checkbox.
         
     | 
| 
      
 5 
     | 
    
         
            +
              If the value is `true` it uses the default label text. ([@ehoch](https://github.com/ehoch))
         
     | 
| 
      
 6 
     | 
    
         
            +
              * Add html support for hints. ([@findrails](https://github.com/findrails))
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ### bug fix
         
     | 
| 
      
 9 
     | 
    
         
            +
              * Fix `min_max` component to not output maximum value. ([@julian7](https://github.com/julian7)).
         
     | 
| 
      
 10 
     | 
    
         
            +
              Closes [#483](https://github.com/plataformatec/simple_form/issues/483)
         
     | 
| 
      
 11 
     | 
    
         
            +
              * Remove leading and trailing whitespace from `label_text`.
         
     | 
| 
      
 12 
     | 
    
         
            +
              Closes [#492](https://github.com/plataformatec/simple_form/issues/492)
         
     | 
| 
      
 13 
     | 
    
         
            +
              * Fix checked radio button issue when value is false. ([@georgehemmings](https://github.com/georgehemmings)).
         
     | 
| 
      
 14 
     | 
    
         
            +
              * Propagate defaults options to nested forms.
         
     | 
| 
      
 15 
     | 
    
         
            +
              Closes [#553](https://github.com/plataformatec/simple_form/issues/533).
         
     | 
| 
      
 16 
     | 
    
         
            +
              ([@nashby](https://github.com/nashby))
         
     | 
| 
      
 17 
     | 
    
         
            +
              * Fix limit and maxlength with decimal points. ([@shwoodard](https://github.com/shwoodard))
         
     | 
| 
      
 18 
     | 
    
         
            +
              * Fix issue when html are duplicated.
         
     | 
| 
      
 19 
     | 
    
         
            +
              Closes [#488](https://github.com/plataformatec/simple_form/issues/488).
         
     | 
| 
      
 20 
     | 
    
         
            +
              ([@ebonical](https://github.com/ebonical))
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       1 
22 
     | 
    
         
             
            ## 2.0.1
         
     | 
| 
       2 
23 
     | 
    
         | 
| 
       3 
24 
     | 
    
         
             
            ### bug fix
         
     | 
    
        data/MIT-LICENSE
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -31,13 +31,6 @@ Also, if you want to use the country select, you will need the 
     | 
|
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
            `gem 'country_select'`
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
            ## Configuration
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
            **SimpleForm** has several configuration options. You can read and change them in the initializer
         
     | 
| 
       37 
     | 
    
         
            -
            created by **SimpleForm**, so if you haven't executed the command below yet, please do:
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            `rails generate simple_form:install`
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
34 
     | 
    
         
             
            ### Twitter Bootstrap
         
     | 
| 
       42 
35 
     | 
    
         | 
| 
       43 
36 
     | 
    
         
             
            **SimpleForm** 2.0 can be easily integrated to the [Twitter Bootstrap](http://twitter.github.com/bootstrap).
         
     | 
| 
         @@ -54,117 +47,6 @@ For more information see the generator output, our 
     | 
|
| 
       54 
47 
     | 
    
         | 
| 
       55 
48 
     | 
    
         
             
            **NOTE**: **SimpleForm** integration requires Twitter Bootstrap version 2.0 or higher.
         
     | 
| 
       56 
49 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
            ### The wrappers API
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
            With **SimpleForm** you can configure how your components will be rendered using the wrappers API.
         
     | 
| 
       60 
     | 
    
         
            -
            The syntax looks like this:
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       63 
     | 
    
         
            -
            config.wrappers :tag => :div, :class => :input,
         
     | 
| 
       64 
     | 
    
         
            -
                            :error_class => :field_with_errors do |b|
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
              # Form extensions
         
     | 
| 
       67 
     | 
    
         
            -
              b.use :html5
         
     | 
| 
       68 
     | 
    
         
            -
              b.optional :pattern
         
     | 
| 
       69 
     | 
    
         
            -
              b.use :maxlength
         
     | 
| 
       70 
     | 
    
         
            -
              b.use :placeholder
         
     | 
| 
       71 
     | 
    
         
            -
              b.use :readonly
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
              # Form components
         
     | 
| 
       74 
     | 
    
         
            -
              b.use :label_input
         
     | 
| 
       75 
     | 
    
         
            -
              b.use :hint,  :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
       76 
     | 
    
         
            -
              b.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
       77 
     | 
    
         
            -
            end
         
     | 
| 
       78 
     | 
    
         
            -
            ```
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
            The _Form components_ will generate the form tags like labels, inputs, hints or errors contents.
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
            The _Form extensions_ are used to generate some attributes or perform some lookups on the model to
         
     | 
| 
       83 
     | 
    
         
            -
            add extra information to your components.
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
            You can create new _Form components_ using the wrappers API as in the following example:
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       88 
     | 
    
         
            -
            config.wrappers do |b|
         
     | 
| 
       89 
     | 
    
         
            -
              b.use :placeholder
         
     | 
| 
       90 
     | 
    
         
            -
              b.use :label_input
         
     | 
| 
       91 
     | 
    
         
            -
              b.wrapper :tag => :div, :class => 'separator' do |component|
         
     | 
| 
       92 
     | 
    
         
            -
                component.use :hint,  :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
       93 
     | 
    
         
            -
                component.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
       94 
     | 
    
         
            -
              end
         
     | 
| 
       95 
     | 
    
         
            -
            end
         
     | 
| 
       96 
     | 
    
         
            -
            ```
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
            this will wrap the hint and error components within a `div` tag using the class `'separator'`.
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
            If you want to customize the custom _Form components_ on demand you can give it a name like this:
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       103 
     | 
    
         
            -
            config.wrappers do |b|
         
     | 
| 
       104 
     | 
    
         
            -
              b.use :placeholder
         
     | 
| 
       105 
     | 
    
         
            -
              b.use :label_input
         
     | 
| 
       106 
     | 
    
         
            -
              b.wrapper :my_wrapper, :tag => :div, :class => 'separator' do |component|
         
     | 
| 
       107 
     | 
    
         
            -
                component.use :hint,  :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
       108 
     | 
    
         
            -
                component.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
       109 
     | 
    
         
            -
              end
         
     | 
| 
       110 
     | 
    
         
            -
            end
         
     | 
| 
       111 
     | 
    
         
            -
            ```
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
            and now you can pass options to your `input` calls to customize the `:my_wrapper` _Form component_.
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       116 
     | 
    
         
            -
            # Completely turns off the custom wrapper
         
     | 
| 
       117 
     | 
    
         
            -
            f.input :name, :my_wrapper => false
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
            # Configure the html
         
     | 
| 
       120 
     | 
    
         
            -
            f.input :name, :my_wrapper_html => { :id => 'special_id' }
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
            # Configure the tag
         
     | 
| 
       123 
     | 
    
         
            -
            f.input :name, :my_wrapper_tag => :p
         
     | 
| 
       124 
     | 
    
         
            -
            ```
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
            You can also define more than one wrapper and pick one to render in a specific form or input.
         
     | 
| 
       127 
     | 
    
         
            -
            To define another wrapper you have to give it a name, as the follow:
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       130 
     | 
    
         
            -
            config.wrappers :small do |b|
         
     | 
| 
       131 
     | 
    
         
            -
              b.use :placeholder
         
     | 
| 
       132 
     | 
    
         
            -
              b.use :label_input
         
     | 
| 
       133 
     | 
    
         
            -
            end
         
     | 
| 
       134 
     | 
    
         
            -
            ```
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
            and use it in this way:
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       139 
     | 
    
         
            -
            # Specifying to whole form
         
     | 
| 
       140 
     | 
    
         
            -
            simple_form_for @user, :wrapper => :small do |f|
         
     | 
| 
       141 
     | 
    
         
            -
              f.input :name
         
     | 
| 
       142 
     | 
    
         
            -
            end
         
     | 
| 
       143 
     | 
    
         
            -
             
     | 
| 
       144 
     | 
    
         
            -
            # Specifying to one input
         
     | 
| 
       145 
     | 
    
         
            -
            simple_form_for @user do |f|
         
     | 
| 
       146 
     | 
    
         
            -
              f.input :name, :wrapper => :small
         
     | 
| 
       147 
     | 
    
         
            -
            end
         
     | 
| 
       148 
     | 
    
         
            -
            ```
         
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
       150 
     | 
    
         
            -
            **SimpleForm** also allows you to use optional elements. For instance, let's suppose you want to use
         
     | 
| 
       151 
     | 
    
         
            -
            hints or placeholders, but you don't want them to be generated automatically. You can set their
         
     | 
| 
       152 
     | 
    
         
            -
            default values to `false` or use the `optional` method. Is preferible to use the `optional` syntax:
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       155 
     | 
    
         
            -
            config.wrappers :placeholder => false do |b|
         
     | 
| 
       156 
     | 
    
         
            -
              b.use :placeholder
         
     | 
| 
       157 
     | 
    
         
            -
              b.use :label_input
         
     | 
| 
       158 
     | 
    
         
            -
              b.wrapper :tag => :div, :class => 'separator' do |component|
         
     | 
| 
       159 
     | 
    
         
            -
                component.optional :hint, :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
       160 
     | 
    
         
            -
                component.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
       161 
     | 
    
         
            -
              end
         
     | 
| 
       162 
     | 
    
         
            -
            end
         
     | 
| 
       163 
     | 
    
         
            -
            ```
         
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
            By setting it as `optional`, a hint will only be generated when `:hint => true` is explicitly used.
         
     | 
| 
       166 
     | 
    
         
            -
            The same for placehold.
         
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
50 
     | 
    
         
             
            ## Usage
         
     | 
| 
       169 
51 
     | 
    
         | 
| 
       170 
52 
     | 
    
         
             
            **SimpleForm** was designed to be customized as you need to. Basically it's a stack of components that
         
     | 
| 
         @@ -383,26 +265,7 @@ drop down then you may use the `:collection` option: 
     | 
|
| 
       383 
265 
     | 
    
         
             
            f.input :shipping_country, :priority => [ "Brazil" ], :collection => [ "Australia", "Brazil", "New Zealand"]
         
     | 
| 
       384 
266 
     | 
    
         
             
            ```
         
     | 
| 
       385 
267 
     | 
    
         | 
| 
       386 
     | 
    
         
            -
            ###  
     | 
| 
       387 
     | 
    
         
            -
             
     | 
| 
       388 
     | 
    
         
            -
            **SimpleForm** allows you to add a wrapper which contains the label, error, hint and input.
         
     | 
| 
       389 
     | 
    
         
            -
            The first step is to configure a wrapper tag:
         
     | 
| 
       390 
     | 
    
         
            -
             
     | 
| 
       391 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       392 
     | 
    
         
            -
            SimpleForm.wrapper_tag = :p
         
     | 
| 
       393 
     | 
    
         
            -
            ```
         
     | 
| 
       394 
     | 
    
         
            -
             
     | 
| 
       395 
     | 
    
         
            -
            And now, you no longer need to wrap your `f.input` calls anymore:
         
     | 
| 
       396 
     | 
    
         
            -
             
     | 
| 
       397 
     | 
    
         
            -
            ```erb
         
     | 
| 
       398 
     | 
    
         
            -
            <%= simple_form_for @user do |f| %>
         
     | 
| 
       399 
     | 
    
         
            -
              <%= f.input :username %>
         
     | 
| 
       400 
     | 
    
         
            -
              <%= f.input :password %>
         
     | 
| 
       401 
     | 
    
         
            -
              <%= f.button :submit %>
         
     | 
| 
       402 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       403 
     | 
    
         
            -
            ```
         
     | 
| 
       404 
     | 
    
         
            -
             
     | 
| 
       405 
     | 
    
         
            -
            ## Associations
         
     | 
| 
      
 268 
     | 
    
         
            +
            ### Associations
         
     | 
| 
       406 
269 
     | 
    
         | 
| 
       407 
270 
     | 
    
         
             
            To deal with associations, **SimpleForm** can generate select inputs, a series of radios buttons or check boxes.
         
     | 
| 
       408 
271 
     | 
    
         
             
            Lets see how it works: imagine you have a user model that belongs to a company and has_and_belongs_to_many
         
     | 
| 
         @@ -451,7 +314,7 @@ the collection by hand, all together with the prompt: 
     | 
|
| 
       451 
314 
     | 
    
         
             
            f.association :company, :collection => Company.active.all(:order => 'name'), :prompt => "Choose a Company"
         
     | 
| 
       452 
315 
     | 
    
         
             
            ```
         
     | 
| 
       453 
316 
     | 
    
         | 
| 
       454 
     | 
    
         
            -
             
     | 
| 
      
 317 
     | 
    
         
            +
            ### Buttons
         
     | 
| 
       455 
318 
     | 
    
         | 
| 
       456 
319 
     | 
    
         
             
            All web forms need buttons, right? **SimpleForm** wraps them in the DSL, acting like a proxy:
         
     | 
| 
       457 
320 
     | 
    
         | 
| 
         @@ -464,7 +327,7 @@ All web forms need buttons, right? **SimpleForm** wraps them in the DSL, acting 
     | 
|
| 
       464 
327 
     | 
    
         | 
| 
       465 
328 
     | 
    
         
             
            The above will simply call submit. You choose to use it or not, it's just a question of taste.
         
     | 
| 
       466 
329 
     | 
    
         | 
| 
       467 
     | 
    
         
            -
             
     | 
| 
      
 330 
     | 
    
         
            +
            ### Wrapping Rails Form Helpers
         
     | 
| 
       468 
331 
     | 
    
         | 
| 
       469 
332 
     | 
    
         
             
            Say you wanted to use a rails form helper but still wrap it in **SimpleForm** goodness? You can, by
         
     | 
| 
       470 
333 
     | 
    
         
             
            calling input with a block like so:
         
     | 
| 
         @@ -478,14 +341,15 @@ calling input with a block like so: 
     | 
|
| 
       478 
341 
     | 
    
         
             
            In the above example, we're taking advantage of Rails 3's select method that allows us to pass in a
         
     | 
| 
       479 
342 
     | 
    
         
             
            hash of additional attributes for each option.
         
     | 
| 
       480 
343 
     | 
    
         | 
| 
       481 
     | 
    
         
            -
             
     | 
| 
      
 344 
     | 
    
         
            +
            ### Extra helpers
         
     | 
| 
       482 
345 
     | 
    
         | 
| 
       483 
346 
     | 
    
         
             
            **SimpleForm** also comes with some extra helpers you can use inside rails default forms without relying
         
     | 
| 
       484 
347 
     | 
    
         
             
            on `simple_form_for` helper. They are listed below.
         
     | 
| 
       485 
348 
     | 
    
         | 
| 
       486 
     | 
    
         
            -
             
     | 
| 
      
 349 
     | 
    
         
            +
            #### Simple Fields For
         
     | 
| 
       487 
350 
     | 
    
         | 
| 
       488 
     | 
    
         
            -
            Wrapper to use SimpleForm inside a default rails form
         
     | 
| 
      
 351 
     | 
    
         
            +
            Wrapper to use **SimpleForm** inside a default rails form. It works in the same way that the `field_for`
         
     | 
| 
      
 352 
     | 
    
         
            +
            Rails helper, but change the builder to use the `SimpleForm::FormBuilder`.
         
     | 
| 
       489 
353 
     | 
    
         | 
| 
       490 
354 
     | 
    
         
             
            ```ruby
         
     | 
| 
       491 
355 
     | 
    
         
             
            form_for @user do |f|
         
     | 
| 
         @@ -496,7 +360,8 @@ form_for @user do |f| 
     | 
|
| 
       496 
360 
     | 
    
         
             
            end
         
     | 
| 
       497 
361 
     | 
    
         
             
            ```
         
     | 
| 
       498 
362 
     | 
    
         | 
| 
       499 
     | 
    
         
            -
             
     | 
| 
      
 363 
     | 
    
         
            +
             
     | 
| 
      
 364 
     | 
    
         
            +
            #### Collection Radio Buttons
         
     | 
| 
       500 
365 
     | 
    
         | 
| 
       501 
366 
     | 
    
         
             
            Creates a collection of radio inputs with labels associated (same API as `collection_select`):
         
     | 
| 
       502 
367 
     | 
    
         | 
| 
         @@ -513,7 +378,7 @@ end 
     | 
|
| 
       513 
378 
     | 
    
         
             
            <label class="collection_radio_buttons" for="user_options_false">No</label>
         
     | 
| 
       514 
379 
     | 
    
         
             
            ```
         
     | 
| 
       515 
380 
     | 
    
         | 
| 
       516 
     | 
    
         
            -
             
     | 
| 
      
 381 
     | 
    
         
            +
            #### Collection Check Boxes
         
     | 
| 
       517 
382 
     | 
    
         | 
| 
       518 
383 
     | 
    
         
             
            Creates a collection of check boxes with labels associated (same API as `collection_select`):
         
     | 
| 
       519 
384 
     | 
    
         | 
| 
         @@ -544,7 +409,7 @@ end 
     | 
|
| 
       544 
409 
     | 
    
         | 
| 
       545 
410 
     | 
    
         
             
            **SimpleForm** comes with a lot of default mappings:
         
     | 
| 
       546 
411 
     | 
    
         | 
| 
       547 
     | 
    
         
            -
            ```
         
     | 
| 
      
 412 
     | 
    
         
            +
            ```text
         
     | 
| 
       548 
413 
     | 
    
         
             
            Mapping               Input                         Column Type
         
     | 
| 
       549 
414 
     | 
    
         | 
| 
       550 
415 
     | 
    
         
             
            boolean               check box                     boolean
         
     | 
| 
         @@ -603,6 +468,17 @@ class DateTimeInput < SimpleForm::Inputs::DateTimeInput 
     | 
|
| 
       603 
468 
     | 
    
         
             
            end
         
     | 
| 
       604 
469 
     | 
    
         
             
            ```
         
     | 
| 
       605 
470 
     | 
    
         | 
| 
      
 471 
     | 
    
         
            +
            Or if you want to add a class to all the select fields you can do:
         
     | 
| 
      
 472 
     | 
    
         
            +
             
     | 
| 
      
 473 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 474 
     | 
    
         
            +
            # app/inputs/collection_select_input.rb
         
     | 
| 
      
 475 
     | 
    
         
            +
            class CollectionSelectInput < SimpleForm::Inputs::CollectionSelectInput
         
     | 
| 
      
 476 
     | 
    
         
            +
              def input_html_classes
         
     | 
| 
      
 477 
     | 
    
         
            +
                super.push('chosen')
         
     | 
| 
      
 478 
     | 
    
         
            +
              end
         
     | 
| 
      
 479 
     | 
    
         
            +
            end
         
     | 
| 
      
 480 
     | 
    
         
            +
            ```
         
     | 
| 
      
 481 
     | 
    
         
            +
             
     | 
| 
       606 
482 
     | 
    
         
             
            ## Custom form builder
         
     | 
| 
       607 
483 
     | 
    
         | 
| 
       608 
484 
     | 
    
         
             
            You can create a custom form builder that uses **SimpleForm**.
         
     | 
| 
         @@ -738,6 +614,132 @@ There are other options that can be configured through I18n API, such as require 
     | 
|
| 
       738 
614 
     | 
    
         
             
            Be sure to check our locale file or the one copied to your application after you run
         
     | 
| 
       739 
615 
     | 
    
         
             
            `rails generate simple_form:install`.
         
     | 
| 
       740 
616 
     | 
    
         | 
| 
      
 617 
     | 
    
         
            +
            ## Configuration
         
     | 
| 
      
 618 
     | 
    
         
            +
             
     | 
| 
      
 619 
     | 
    
         
            +
            **SimpleForm** has several configuration options. You can read and change them in the initializer
         
     | 
| 
      
 620 
     | 
    
         
            +
            created by **SimpleForm**, so if you haven't executed the command below yet, please do:
         
     | 
| 
      
 621 
     | 
    
         
            +
             
     | 
| 
      
 622 
     | 
    
         
            +
            `rails generate simple_form:install`
         
     | 
| 
      
 623 
     | 
    
         
            +
             
     | 
| 
      
 624 
     | 
    
         
            +
            ### The wrappers API
         
     | 
| 
      
 625 
     | 
    
         
            +
             
     | 
| 
      
 626 
     | 
    
         
            +
            With **SimpleForm** you can configure how your components will be rendered using the wrappers API.
         
     | 
| 
      
 627 
     | 
    
         
            +
            The syntax looks like this:
         
     | 
| 
      
 628 
     | 
    
         
            +
             
     | 
| 
      
 629 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 630 
     | 
    
         
            +
            config.wrappers :tag => :div, :class => :input,
         
     | 
| 
      
 631 
     | 
    
         
            +
                            :error_class => :field_with_errors do |b|
         
     | 
| 
      
 632 
     | 
    
         
            +
             
     | 
| 
      
 633 
     | 
    
         
            +
              # Form extensions
         
     | 
| 
      
 634 
     | 
    
         
            +
              b.use :html5
         
     | 
| 
      
 635 
     | 
    
         
            +
              b.optional :pattern
         
     | 
| 
      
 636 
     | 
    
         
            +
              b.use :maxlength
         
     | 
| 
      
 637 
     | 
    
         
            +
              b.use :placeholder
         
     | 
| 
      
 638 
     | 
    
         
            +
              b.use :readonly
         
     | 
| 
      
 639 
     | 
    
         
            +
             
     | 
| 
      
 640 
     | 
    
         
            +
              # Form components
         
     | 
| 
      
 641 
     | 
    
         
            +
              b.use :label_input
         
     | 
| 
      
 642 
     | 
    
         
            +
              b.use :hint,  :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
      
 643 
     | 
    
         
            +
              b.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
      
 644 
     | 
    
         
            +
            end
         
     | 
| 
      
 645 
     | 
    
         
            +
            ```
         
     | 
| 
      
 646 
     | 
    
         
            +
             
     | 
| 
      
 647 
     | 
    
         
            +
            The _Form components_ will generate the form tags like labels, inputs, hints or errors contents. The available components are:
         
     | 
| 
      
 648 
     | 
    
         
            +
             
     | 
| 
      
 649 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 650 
     | 
    
         
            +
            :label         # The <label> tag alone
         
     | 
| 
      
 651 
     | 
    
         
            +
            :input         # The <input> tag alone
         
     | 
| 
      
 652 
     | 
    
         
            +
            :label_input   # The <label> and the <input> tags
         
     | 
| 
      
 653 
     | 
    
         
            +
            :hint          # The hint for the input
         
     | 
| 
      
 654 
     | 
    
         
            +
            :error         # The error for the input
         
     | 
| 
      
 655 
     | 
    
         
            +
            ```
         
     | 
| 
      
 656 
     | 
    
         
            +
             
     | 
| 
      
 657 
     | 
    
         
            +
            The _Form extensions_ are used to generate some attributes or perform some lookups on the model to
         
     | 
| 
      
 658 
     | 
    
         
            +
            add extra information to your components.
         
     | 
| 
      
 659 
     | 
    
         
            +
             
     | 
| 
      
 660 
     | 
    
         
            +
            You can create new _Form components_ using the wrappers API as in the following example:
         
     | 
| 
      
 661 
     | 
    
         
            +
             
     | 
| 
      
 662 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 663 
     | 
    
         
            +
            config.wrappers do |b|
         
     | 
| 
      
 664 
     | 
    
         
            +
              b.use :placeholder
         
     | 
| 
      
 665 
     | 
    
         
            +
              b.use :label_input
         
     | 
| 
      
 666 
     | 
    
         
            +
              b.wrapper :tag => :div, :class => 'separator' do |component|
         
     | 
| 
      
 667 
     | 
    
         
            +
                component.use :hint,  :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
      
 668 
     | 
    
         
            +
                component.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
      
 669 
     | 
    
         
            +
              end
         
     | 
| 
      
 670 
     | 
    
         
            +
            end
         
     | 
| 
      
 671 
     | 
    
         
            +
            ```
         
     | 
| 
      
 672 
     | 
    
         
            +
             
     | 
| 
      
 673 
     | 
    
         
            +
            this will wrap the hint and error components within a `div` tag using the class `'separator'`.
         
     | 
| 
      
 674 
     | 
    
         
            +
             
     | 
| 
      
 675 
     | 
    
         
            +
            If you want to customize the custom _Form components_ on demand you can give it a name like this:
         
     | 
| 
      
 676 
     | 
    
         
            +
             
     | 
| 
      
 677 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 678 
     | 
    
         
            +
            config.wrappers do |b|
         
     | 
| 
      
 679 
     | 
    
         
            +
              b.use :placeholder
         
     | 
| 
      
 680 
     | 
    
         
            +
              b.use :label_input
         
     | 
| 
      
 681 
     | 
    
         
            +
              b.wrapper :my_wrapper, :tag => :div, :class => 'separator' do |component|
         
     | 
| 
      
 682 
     | 
    
         
            +
                component.use :hint,  :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
      
 683 
     | 
    
         
            +
                component.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
      
 684 
     | 
    
         
            +
              end
         
     | 
| 
      
 685 
     | 
    
         
            +
            end
         
     | 
| 
      
 686 
     | 
    
         
            +
            ```
         
     | 
| 
      
 687 
     | 
    
         
            +
             
     | 
| 
      
 688 
     | 
    
         
            +
            and now you can pass options to your `input` calls to customize the `:my_wrapper` _Form component_.
         
     | 
| 
      
 689 
     | 
    
         
            +
             
     | 
| 
      
 690 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 691 
     | 
    
         
            +
            # Completely turns off the custom wrapper
         
     | 
| 
      
 692 
     | 
    
         
            +
            f.input :name, :my_wrapper => false
         
     | 
| 
      
 693 
     | 
    
         
            +
             
     | 
| 
      
 694 
     | 
    
         
            +
            # Configure the html
         
     | 
| 
      
 695 
     | 
    
         
            +
            f.input :name, :my_wrapper_html => { :id => 'special_id' }
         
     | 
| 
      
 696 
     | 
    
         
            +
             
     | 
| 
      
 697 
     | 
    
         
            +
            # Configure the tag
         
     | 
| 
      
 698 
     | 
    
         
            +
            f.input :name, :my_wrapper_tag => :p
         
     | 
| 
      
 699 
     | 
    
         
            +
            ```
         
     | 
| 
      
 700 
     | 
    
         
            +
             
     | 
| 
      
 701 
     | 
    
         
            +
            You can also define more than one wrapper and pick one to render in a specific form or input.
         
     | 
| 
      
 702 
     | 
    
         
            +
            To define another wrapper you have to give it a name, as the follow:
         
     | 
| 
      
 703 
     | 
    
         
            +
             
     | 
| 
      
 704 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 705 
     | 
    
         
            +
            config.wrappers :small do |b|
         
     | 
| 
      
 706 
     | 
    
         
            +
              b.use :placeholder
         
     | 
| 
      
 707 
     | 
    
         
            +
              b.use :label_input
         
     | 
| 
      
 708 
     | 
    
         
            +
            end
         
     | 
| 
      
 709 
     | 
    
         
            +
            ```
         
     | 
| 
      
 710 
     | 
    
         
            +
             
     | 
| 
      
 711 
     | 
    
         
            +
            and use it in this way:
         
     | 
| 
      
 712 
     | 
    
         
            +
             
     | 
| 
      
 713 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 714 
     | 
    
         
            +
            # Specifying to whole form
         
     | 
| 
      
 715 
     | 
    
         
            +
            simple_form_for @user, :wrapper => :small do |f|
         
     | 
| 
      
 716 
     | 
    
         
            +
              f.input :name
         
     | 
| 
      
 717 
     | 
    
         
            +
            end
         
     | 
| 
      
 718 
     | 
    
         
            +
             
     | 
| 
      
 719 
     | 
    
         
            +
            # Specifying to one input
         
     | 
| 
      
 720 
     | 
    
         
            +
            simple_form_for @user do |f|
         
     | 
| 
      
 721 
     | 
    
         
            +
              f.input :name, :wrapper => :small
         
     | 
| 
      
 722 
     | 
    
         
            +
            end
         
     | 
| 
      
 723 
     | 
    
         
            +
            ```
         
     | 
| 
      
 724 
     | 
    
         
            +
             
     | 
| 
      
 725 
     | 
    
         
            +
            **SimpleForm** also allows you to use optional elements. For instance, let's suppose you want to use
         
     | 
| 
      
 726 
     | 
    
         
            +
            hints or placeholders, but you don't want them to be generated automatically. You can set their
         
     | 
| 
      
 727 
     | 
    
         
            +
            default values to `false` or use the `optional` method. Is preferible to use the `optional` syntax:
         
     | 
| 
      
 728 
     | 
    
         
            +
             
     | 
| 
      
 729 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 730 
     | 
    
         
            +
            config.wrappers :placeholder => false do |b|
         
     | 
| 
      
 731 
     | 
    
         
            +
              b.use :placeholder
         
     | 
| 
      
 732 
     | 
    
         
            +
              b.use :label_input
         
     | 
| 
      
 733 
     | 
    
         
            +
              b.wrapper :tag => :div, :class => 'separator' do |component|
         
     | 
| 
      
 734 
     | 
    
         
            +
                component.optional :hint, :wrap_with => { :tag => :span, :class => :hint }
         
     | 
| 
      
 735 
     | 
    
         
            +
                component.use :error, :wrap_with => { :tag => :span, :class => :error }
         
     | 
| 
      
 736 
     | 
    
         
            +
              end
         
     | 
| 
      
 737 
     | 
    
         
            +
            end
         
     | 
| 
      
 738 
     | 
    
         
            +
            ```
         
     | 
| 
      
 739 
     | 
    
         
            +
             
     | 
| 
      
 740 
     | 
    
         
            +
            By setting it as `optional`, a hint will only be generated when `:hint => true` is explicitly used.
         
     | 
| 
      
 741 
     | 
    
         
            +
            The same for placehold.
         
     | 
| 
      
 742 
     | 
    
         
            +
             
     | 
| 
       741 
743 
     | 
    
         
             
            ## HTML 5 Notice
         
     | 
| 
       742 
744 
     | 
    
         | 
| 
       743 
745 
     | 
    
         
             
            By default, **SimpleForm** will generate input field types and attributes that are supported in HTML5,
         
     | 
| 
         @@ -813,4 +815,4 @@ https://github.com/plataformatec/simple_form/issues 
     | 
|
| 
       813 
815 
     | 
    
         | 
| 
       814 
816 
     | 
    
         
             
            ## License
         
     | 
| 
       815 
817 
     | 
    
         | 
| 
       816 
     | 
    
         
            -
            MIT License. Copyright 2012  
     | 
| 
      
 818 
     | 
    
         
            +
            MIT License. Copyright 2012 Plataformatec. http://plataformatec.com.br
         
     | 
| 
         @@ -100,7 +100,9 @@ SimpleForm.setup do |config| 
     | 
|
| 
       100 
100 
     | 
    
         
             
              # Default class for buttons
         
     | 
| 
       101 
101 
     | 
    
         
             
              config.button_class = 'btn'
         
     | 
| 
       102 
102 
     | 
    
         | 
| 
       103 
     | 
    
         
            -
              # Method used to tidy up errors.
         
     | 
| 
      
 103 
     | 
    
         
            +
              # Method used to tidy up errors. Specify any Rails Array method.
         
     | 
| 
      
 104 
     | 
    
         
            +
              # :first lists the first message for each field.
         
     | 
| 
      
 105 
     | 
    
         
            +
              # Use :to_sentence to list all errors for each field.
         
     | 
| 
       104 
106 
     | 
    
         
             
              # config.error_method = :first
         
     | 
| 
       105 
107 
     | 
    
         | 
| 
       106 
108 
     | 
    
         
             
              # Default tag used for error notification helper.
         
     | 
| 
         @@ -9,16 +9,18 @@ en: 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  # When using html, text and mark won't be used.
         
     | 
| 
       10 
10 
     | 
    
         
             
                  # html: '<abbr title="required">*</abbr>'
         
     | 
| 
       11 
11 
     | 
    
         
             
                error_notification:
         
     | 
| 
       12 
     | 
    
         
            -
                  default_message: " 
     | 
| 
      
 12 
     | 
    
         
            +
                  default_message: "Please review the problems below:"
         
     | 
| 
       13 
13 
     | 
    
         
             
                # Labels and hints examples
         
     | 
| 
       14 
14 
     | 
    
         
             
                # labels:
         
     | 
| 
       15 
     | 
    
         
            -
                #    
     | 
| 
      
 15 
     | 
    
         
            +
                #   defaults:
         
     | 
| 
      
 16 
     | 
    
         
            +
                #     password: 'Password'
         
     | 
| 
       16 
17 
     | 
    
         
             
                #   user:
         
     | 
| 
       17 
18 
     | 
    
         
             
                #     new:
         
     | 
| 
       18 
     | 
    
         
            -
                #       email: 'E-mail  
     | 
| 
      
 19 
     | 
    
         
            +
                #       email: 'E-mail to sign in.'
         
     | 
| 
       19 
20 
     | 
    
         
             
                #     edit:
         
     | 
| 
       20 
21 
     | 
    
         
             
                #       email: 'E-mail.'
         
     | 
| 
       21 
22 
     | 
    
         
             
                # hints:
         
     | 
| 
       22 
     | 
    
         
            -
                #    
     | 
| 
       23 
     | 
    
         
            -
                # 
     | 
| 
      
 23 
     | 
    
         
            +
                #   defaults:
         
     | 
| 
      
 24 
     | 
    
         
            +
                #     username: 'User name to sign in.'
         
     | 
| 
      
 25 
     | 
    
         
            +
                #     password: 'No special characters, please.'
         
     | 
| 
       24 
26 
     | 
    
         | 
| 
         @@ -193,7 +193,8 @@ module SimpleForm 
     | 
|
| 
       193 
193 
     | 
    
         
             
                  #   end
         
     | 
| 
       194 
194 
     | 
    
         
             
                  def simple_fields_for(*args, &block)
         
     | 
| 
       195 
195 
     | 
    
         
             
                    options = args.extract_options!
         
     | 
| 
       196 
     | 
    
         
            -
                    options[:wrapper] 
     | 
| 
      
 196 
     | 
    
         
            +
                    options[:wrapper]  ||= self.options[:wrapper]
         
     | 
| 
      
 197 
     | 
    
         
            +
                    options[:defaults] ||= self.options[:defaults]
         
     | 
| 
       197 
198 
     | 
    
         | 
| 
       198 
199 
     | 
    
         
             
                    if self.class < ActionView::Helpers::FormBuilder
         
     | 
| 
       199 
200 
     | 
    
         
             
                      options[:builder] ||= self.class
         
     | 
| 
         @@ -216,7 +217,8 @@ module SimpleForm 
     | 
|
| 
       216 
217 
     | 
    
         
             
                    html_options = html_options.dup
         
     | 
| 
       217 
218 
     | 
    
         | 
| 
       218 
219 
     | 
    
         
             
                    [:checked, :selected, :disabled].each do |option|
         
     | 
| 
       219 
     | 
    
         
            -
                       
     | 
| 
      
 220 
     | 
    
         
            +
                      current_option = options[option]
         
     | 
| 
      
 221 
     | 
    
         
            +
                      next if current_option.nil?
         
     | 
| 
       220 
222 
     | 
    
         | 
| 
       221 
223 
     | 
    
         
             
                      accept = if current_option.respond_to?(:call)
         
     | 
| 
       222 
224 
     | 
    
         
             
                        current_option.call(item)
         
     | 
| 
         @@ -41,7 +41,7 @@ module SimpleForm 
     | 
|
| 
       41 
41 
     | 
    
         
             
                  lookups = []
         
     | 
| 
       42 
42 
     | 
    
         
             
                  lookups << :"#{object_name}"
         
     | 
| 
       43 
43 
     | 
    
         
             
                  lookups << :default_message
         
     | 
| 
       44 
     | 
    
         
            -
                  lookups << " 
     | 
| 
      
 44 
     | 
    
         
            +
                  lookups << "Please review the problems below:"
         
     | 
| 
       45 
45 
     | 
    
         
             
                  I18n.t(lookups.shift, :scope => :"simple_form.error_notification", :default => lookups)
         
     | 
| 
       46 
46 
     | 
    
         
             
                end
         
     | 
| 
       47 
47 
     | 
    
         
             
              end
         
     | 
| 
         @@ -100,7 +100,7 @@ module SimpleForm 
     | 
|
| 
       100 
100 
     | 
    
         
             
                # == Priority
         
     | 
| 
       101 
101 
     | 
    
         
             
                #
         
     | 
| 
       102 
102 
     | 
    
         
             
                # Some inputs, as :time_zone and :country accepts a :priority option. If none is
         
     | 
| 
       103 
     | 
    
         
            -
                # given SimpleForm.time_zone_priority and SimpleForm.country_priority are used  
     | 
| 
      
 103 
     | 
    
         
            +
                # given SimpleForm.time_zone_priority and SimpleForm.country_priority are used respectively.
         
     | 
| 
       104 
104 
     | 
    
         
             
                #
         
     | 
| 
       105 
105 
     | 
    
         
             
                def input(attribute_name, options={}, &block)
         
     | 
| 
       106 
106 
     | 
    
         
             
                  options = @defaults.deep_dup.deep_merge(options) if @defaults
         
     | 
| 
         @@ -48,6 +48,7 @@ module SimpleForm 
     | 
|
| 
       48 
48 
     | 
    
         
             
                  def initialize(builder, attribute_name, column, input_type, options = {})
         
     | 
| 
       49 
49 
     | 
    
         
             
                    super
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
                    options             = options.dup
         
     | 
| 
       51 
52 
     | 
    
         
             
                    @builder            = builder
         
     | 
| 
       52 
53 
     | 
    
         
             
                    @attribute_name     = attribute_name
         
     | 
| 
       53 
54 
     | 
    
         
             
                    @column             = column
         
     | 
| 
         @@ -86,7 +87,22 @@ module SimpleForm 
     | 
|
| 
       86 
87 
     | 
    
         
             
                  end
         
     | 
| 
       87 
88 
     | 
    
         | 
| 
       88 
89 
     | 
    
         
             
                  def limit
         
     | 
| 
       89 
     | 
    
         
            -
                     
     | 
| 
      
 90 
     | 
    
         
            +
                    if column
         
     | 
| 
      
 91 
     | 
    
         
            +
                      decimal_or_float? ? decimal_limit : column_limit
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
      
 93 
     | 
    
         
            +
                  end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                  def column_limit
         
     | 
| 
      
 96 
     | 
    
         
            +
                    column.limit
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                  # Add one for decimal point
         
     | 
| 
      
 100 
     | 
    
         
            +
                  def decimal_limit
         
     | 
| 
      
 101 
     | 
    
         
            +
                    column_limit && (column_limit + 1)
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                  def decimal_or_float?
         
     | 
| 
      
 105 
     | 
    
         
            +
                    column.number? && column.type != :integer
         
     | 
| 
       90 
106 
     | 
    
         
             
                  end
         
     | 
| 
       91 
107 
     | 
    
         | 
| 
       92 
108 
     | 
    
         
             
                  def nested_boolean_style?
         
     | 
| 
         @@ -100,7 +116,8 @@ module SimpleForm 
     | 
|
| 
       100 
116 
     | 
    
         | 
| 
       101 
117 
     | 
    
         
             
                  # Retrieve options for the given namespace from the options hash
         
     | 
| 
       102 
118 
     | 
    
         
             
                  def html_options_for(namespace, css_classes)
         
     | 
| 
       103 
     | 
    
         
            -
                    html_options = options[:"#{namespace}_html"] 
     | 
| 
      
 119 
     | 
    
         
            +
                    html_options = options[:"#{namespace}_html"]
         
     | 
| 
      
 120 
     | 
    
         
            +
                    html_options = html_options ? html_options.dup : {}
         
     | 
| 
       104 
121 
     | 
    
         
             
                    css_classes << html_options[:class] if html_options.key?(:class)
         
     | 
| 
       105 
122 
     | 
    
         
             
                    html_options[:class] = css_classes
         
     | 
| 
       106 
123 
     | 
    
         
             
                    html_options
         
     | 
| 
         @@ -5,7 +5,7 @@ module SimpleForm 
     | 
|
| 
       5 
5 
     | 
    
         
             
                    if nested_boolean_style?
         
     | 
| 
       6 
6 
     | 
    
         
             
                      build_hidden_field_for_checkbox +
         
     | 
| 
       7 
7 
     | 
    
         
             
                        template.label_tag(nil, :class => "checkbox") {
         
     | 
| 
       8 
     | 
    
         
            -
                          build_check_box_without_hidden_field
         
     | 
| 
      
 8 
     | 
    
         
            +
                          build_check_box_without_hidden_field + inline_label
         
     | 
| 
       9 
9 
     | 
    
         
             
                        }
         
     | 
| 
       10 
10 
     | 
    
         
             
                    else
         
     | 
| 
       11 
11 
     | 
    
         
             
                      build_check_box
         
     | 
| 
         @@ -53,6 +53,11 @@ module SimpleForm 
     | 
|
| 
       53 
53 
     | 
    
         
             
                                          :disabled => input_html_options[:disabled])
         
     | 
| 
       54 
54 
     | 
    
         
             
                  end
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
                  def inline_label
         
     | 
| 
      
 57 
     | 
    
         
            +
                    inline_option = options[:inline_label]
         
     | 
| 
      
 58 
     | 
    
         
            +
                    inline_option == true ? label_text : inline_option
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       56 
61 
     | 
    
         
             
                  # Booleans are not required by default because in most of the cases
         
     | 
| 
       57 
62 
     | 
    
         
             
                  # it makes no sense marking them as required. The only exception is
         
     | 
| 
       58 
63 
     | 
    
         
             
                  # Terms of Use usually presented at most sites sign up screen.
         
     | 
    
        data/lib/simple_form/version.rb
    CHANGED
    
    
| 
         @@ -63,6 +63,12 @@ class BuilderTest < ActionView::TestCase 
     | 
|
| 
       63 
63 
     | 
    
         
             
                assert_select 'form input[type=radio][value=true][checked=checked]'
         
     | 
| 
       64 
64 
     | 
    
         
             
                assert_no_select 'form input[type=radio][value=false][checked=checked]'
         
     | 
| 
       65 
65 
     | 
    
         
             
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
         
     | 
| 
      
 67 
     | 
    
         
            +
              test 'collection radio accepts checked item which has a value of false' do
         
     | 
| 
      
 68 
     | 
    
         
            +
                with_collection_radio_buttons @user, :active, [[1, true], [0, false]], :last, :first, :checked => false
         
     | 
| 
      
 69 
     | 
    
         
            +
                assert_no_select 'form input[type=radio][value=true][checked=checked]'
         
     | 
| 
      
 70 
     | 
    
         
            +
                assert_select 'form input[type=radio][value=false][checked=checked]'
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
       66 
72 
     | 
    
         | 
| 
       67 
73 
     | 
    
         
             
              test 'collection radio accepts multiple disabled items' do
         
     | 
| 
       68 
74 
     | 
    
         
             
                collection = [[1, true], [0, false], [2, 'other']]
         
     |