# SimpleForm O **SimpleForm** é um **gem** que simplifica drasticamente a criação de formularios. Para utiliza-lo, adicione no o SimpleForm no ```Gemfile```
gem 'simple_form'
Depois execute o comando para instalar o **gem**: ```$ bundle install``` Para iniciar o SimpleForm no projeto, execute o comando: ```$ rails g simple_form:install``` Esse comando ira criar alguns arquivos no projeto e instalar o SimpleForm. Também é possivel passar a variavel ```--bootstrap``` para inicializar o SimpleForm preparado para o Twitter Bootstrap. Para utilizar o Simple Form, em vez de usar a função ```form_for```, vamos usar a função ```simple_form_for```. #### Exemplo de formulário com o SimpleForm
<%= simple_form_for(@product) do |f| %>
  <%= f.error_notification %>
  <%= f.input :name %>
  <%= f.input :price, hint: "price should be in USD" %>
  <%= f.input :released_on, label: "Release Date" %>
  <%= f.input :discontinued %>
  <%= f.input :rating, collection: 1..5, as: :radio_buttons %>
  <%= f.association :publisher %>
  <%= f.association :categories, as: :check_boxes %>
  <%= f.error :base %>
  <%= f.button :submit %>
<% end %>
#### Funções - **input**
Input padrão que vai ser definido pelo tipo de variavel definida no modelo.
Exemplo:```f.input :name``` - **association**
Utilizado para associações. Automaticamente coloca as associações possiveis na lista do formulario. Exemplo: ```f.association :categories``` - **button**
Utilizado para enviar o formulario.
Exemplo: ```f.button :submit``` - **error_notification**
Retorna as *mensagens flash* de erro e sucesso.
Exemplo: ```f.error_notification``` - **error**
Retorna o erro de validação de um campo especifico.
Exemplo: ```f.error :username, :id => 'user_name_error'``` #### Variaveis - ```:hint => 'preço em reais'``` - ```:label => 'Nome completo'``` - ```:placeholder => 'exemple@email.com'``` - ```:collection => 1..5``` - ```:as => radio_buttons``` #### Custom Wrappers O **simple_form** envolve os campos do formulario em *divs*. Para criar seus proprios *wrappers*, adicione a seguinte função no arquivo ```config/initializers/simple_form.rb```: config.wrappers :basic, :tag => :span do |b| b.use :placeholder b.use :label_input #component.use :hint, :wrap_with => { :tag => :span, :class => :hint } #component.use :error, :wrap_with => { :tag => :span, :class => :error } end Depois para utilizar esse *wrapper*: f.input :email, wrapper: "basic", label: false #### Links - [SimpleForm (GitHub)](https://github.com/plataformatec/simple_form) - [RailsCasts - SimpleForm Revised](http://railscasts.com/episodes/234-simple-form-revised)
voltar