O Rails torna fácil e simples criar uma interface gráfica de usuário acabando com a complexidade na criação de elementos para seus formulários web, fornecendo ajudantes de visão para gerar a marcação HTML para seus Forms. No entanto, uma vez que esses ajudantes têm diferentes casos de uso, os desenvolvedores precisam conhecer as diferenças entre os métodos de ajuda antes de colocá-los em uso.
O Rails fornece uma série de ajudantes para gerar elementos de formulário, tais como caixas de seleção, campos de texto, botões de rádio e vários outros. Você ainda pode adicionar Widgets externos através de um GEM ou frameworks completos como o Apotomo e vários outros.
Rails Form: http://guides.rubyonrails.org/form_helpers.html
Usando Elementos de Formulários
1 – Crie um projeto Ruby on Rails para o banco de dados MySQL, o configure adequadamente, use os respectivos códigos abaixo para completar os arquivos de modelo, visão e controlador:
Migra modelo – Migrate
rails g model modelo01 nome:string sobrenome:string cargo:string data:datetime salario:float genero:string ativo:boolean observacao:string rake db:migrate
Exemplo:
Neste exemplo criamos um modelo de dados e o utilizamos para gravar dados inseridos pelo usuário em um formulário web.
Ruby on Rails
Model
class Modelo01 < ActiveRecord::Base # Cria validação validates :nome, :sobrenome, :cargo, :data, :salario, :genero, :presence => true#{:message => "Campo obrigatório"} # Regex - valores alphanumericos validates :nome, :sobrenome, :cargo, :format => {:with => /[A-Za-z]+/, :message => "Permitido somente caracteres alphanuméricos"} end
View
<h1>Desenvolvimento Aberto</h1> <h2>Ruby on Rails - Elementos - Form </h2> <%= form_for @modelo, :url => {:action => :create} do |cad|%> <% if @modelo.errors.any? %> <h3>Erros: </h3> <ul style="color:red"> <% @modelo.errors.full_messages.each do |menssagem| %> <li> <%= menssagem %> </li> <% end %> </ul> <% end %> <fieldset> <legend> Cadastro: </legend> <table> <tr> <td> <%= cad.label :nome%> </td> <td> <%= cad.text_field :nome %> </td> </tr> <tr> <td><%= cad.label :sobrenome%></td> <td><%= cad.text_field :sobrenome, :size => "35x10"%></td> </tr> <tr> <td><%= cad.label :cargo%></td> <td><%= cad.select :cargo, options_for_select([["Vocalista", "Vocalista"], ["Guitarrista", "Guitarrista"] , ["Baixista","Baixista"], ["Baterista","Baterista"] ]), html_options= {:style => "width: 100px;"} %></td> </tr> <tr> <td><%= cad.label :data%></td> <td><%= cad.date_field :data, :size => "15x10"%></td> </tr> <tr> <td><%= cad.label :salario%></td> <td><%= cad.text_field :salario, :size => "10x10"%></td> </tr> <tr> <td><%= cad.label :genero%></td> <td><%= cad.collection_radio_buttons :genero, [["Masculino", "Masculino"] ,["Feminino", "Feminino"]] , :first, :last, { item_wrapper_tag: false } %></td> </tr> <tr> <td><%= cad.label :ativo%></td> <td><%= cad.check_box :ativo %></td> </tr> <tr> <td><%= cad.label :observacao%></td> <td><%= cad.text_area :observacao , :size => "40x10" %></td> </tr> </table> </fieldset> <p> <%= cad.submit "Adicionar dados" %> </p> <% end %>
Controller
class MeucontroleController < ApplicationController # Controladores def index @modelo = Modelo01.new end def new @modelo = Modelo01.new end # Cria registro def create @modelo = Modelo01.new(modelo_params) if @modelo.save flash[:notice] = "Dados Salvos com sucesso." render "index" else # Você pode colocar uma menssagem aqui. render "index" end end # Define parametros requeridos private def modelo_params params.require(:modelo01).permit(:nome, :sobrenome, :cargo, :data, :salario, :genero, :ativo, :observacao) end end