# heartcombo/simple_form

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/heartcombo-simple-form).**

8,229 stars · 1,297 forks · Ruby · MIT

## Links

- GitHub: https://github.com/heartcombo/simple_form
- awesome-repositories: https://awesome-repositories.com/repository/heartcombo-simple-form.md

## Topics

`dsl` `form-builder` `rails` `rails-helper` `ruby`

## Description

Simple Form is a Ruby on Rails form builder that provides a domain specific language for generating HTML forms mapped to database models. It functions as an automatic model input mapper, selecting the appropriate HTML input element based on the database column type of a model.

The project employs a markup independent approach to separate business requirements from final HTML rendering and CSS. It provides a customizable form component library consisting of extensible builders and wrappers to standardize layout structures and input behaviors.

The library covers database-driven form generation and the handling of dynamic model association inputs. It includes capabilities for internationalized form labeling through lookup keys and the creation of collection-based inputs.

## Tags

### Data & Databases

- [Data Type Mappings](https://awesome-repositories.com/f/data-databases/data-type-mappings.md) — Automatically selects the appropriate HTML input element by mapping the database column's data type to a corresponding field.
- [Database Type Mappings](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/schema-management-tools/database-type-mappings.md) — Matches database column types to the most appropriate HTML input elements automatically. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Association Field Renderers](https://awesome-repositories.com/f/data-databases/object-relational-mappers/data-modeling/entity-relationship-models/association-models/association-field-renderers.md) — Provides automatic rendering of form fields based on the model relationships defined in the database.

### Web Development

- [Form Builders](https://awesome-repositories.com/f/web-development/backend-development/web-frameworks/language-specific-ecosystems/ruby-on-rails-frameworks/form-builders.md) — Provides a domain specific language for generating flexible HTML forms mapped to database models within Ruby on Rails.
- [Ruby on Rails Frameworks](https://awesome-repositories.com/f/web-development/backend-development/web-frameworks/language-specific-ecosystems/ruby-on-rails-frameworks.md) — Provides a simplified DSL for building user input forms specifically within the Ruby on Rails ecosystem.
- [Database-to-Input Mappers](https://awesome-repositories.com/f/web-development/database-to-input-mappers.md) — Provides automatic selection of HTML input elements by inspecting the database column types of the associated model.
- [Form Definition DSLs](https://awesome-repositories.com/f/web-development/form-definition-dsls.md) — Uses a domain specific language to decouple input field definitions from their final HTML rendering.
- [Form Renderers](https://awesome-repositories.com/f/web-development/form-management-libraries/form-renderers.md) — Implements a logic-based DSL to programmatically generate HTML output and control form layout independently of the final markup.

### Software Engineering & Architecture

- [Automatic Form Generation](https://awesome-repositories.com/f/software-engineering-architecture/schema-based-state-validation/form-validation-schemas/automatic-form-generation.md) — Automatically generates HTML form fields based on the data types of database columns.
- [Translation Keys](https://awesome-repositories.com/f/software-engineering-architecture/string-validation-and-normalization/translation-keys.md) — Uses unique translation keys to map form labels and hints to localized text strings.

### User Interface & Experience

- [Nested Input Renderers](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/nested-input-renderers.md) — Renders form fields for model associations by automatically determining the collection and input type from the relationship. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Customizable Form Builder Logic](https://awesome-repositories.com/f/user-interface-experience/form-builders/customizable-form-builder-logic.md) — Allows global modification of input rendering and configuration by extending the base builder logic. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Extensible](https://awesome-repositories.com/f/user-interface-experience/form-builders/extensible.md) — Implements an extensible builder hierarchy allowing modification of input rendering logic through class inheritance.
- [Form Component Libraries](https://awesome-repositories.com/f/user-interface-experience/form-component-libraries.md) — Ships a customizable library of extensible builders and wrappers for creating standardized form layout structures.
- [Markup-Independent Form Generators](https://awesome-repositories.com/f/user-interface-experience/html-markup-templates/form-markup-generators/markup-independent-form-generators.md) — Decouples business requirements from final HTML rendering through a markup-independent DSL approach. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Collection-Based Selection Inputs](https://awesome-repositories.com/f/user-interface-experience/collection-based-selection-inputs.md) — Automatically generates radio buttons or checkboxes from arrays or ranges to capture multiple user choices.
- [Form Element Wrappers](https://awesome-repositories.com/f/user-interface-experience/component-architectures/html-element-wrappers/form-element-wrappers.md) — Provides wrappers that encapsulate standard form elements to apply consistent CSS classes and HTML structures. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Custom Input Overrides](https://awesome-repositories.com/f/user-interface-experience/form-input-controls/custom-input-overrides.md) — Enables the creation of new input behaviors and rendering logic to expand the library of available form components. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Input Collection Components](https://awesome-repositories.com/f/user-interface-experience/input-collection-components.md) — Creates select boxes, radio buttons, or checkboxes from arrays or ranges to capture user choices. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Internationalized Form Elements](https://awesome-repositories.com/f/user-interface-experience/internationalized-form-elements.md) — Populates form labels and placeholders using lookup keys for internationalization across multiple languages. ([source](https://cdn.jsdelivr.net/gh/heartcombo/simple_form@main/README.md))
- [Key-to-Label Formatters](https://awesome-repositories.com/f/user-interface-experience/key-to-label-formatters.md) — Transforms technical lookup keys into human-readable, internationalized labels for form fields.
- [Layout Wrappers](https://awesome-repositories.com/f/user-interface-experience/layout-wrappers.md) — Wraps form inputs in configurable HTML structures to ensure consistent styling across different design frameworks.
