Rápida introdução a formulários em Rails
Formulários HTML
Table of Contents
1 Formulários em Rails
form
é uma tag do HTML que permite o envio de dados para o
servidor. Os parâmetros principais são:
- action
- descreve a URL para onde os dados serão enviados
- method
- diz qual o verbo HTTP deve ser usado,
GET
ouPOST
.
Entre <form ...>
e </form>
são colocados os vários campos e um
botão especial para o envio. Procure a documentação para detalhes.
Rails oferece alguns métodos para gerar formulários (forms) de maneira compacta e integrada aos modelos (enquanto forms pertencem a view, os dados são normalmente relacionados a models).
form_for
recebe uma instância de um modelo e um bloco. Infere a
action
a partir da instância e usa o bloco para definir o conteúdo.
Para forms gerais, existe a variante form_tag
. Tirando o uso do
modelo, é praticamente igual à anterior.
Os valores dos campos são passados em um hash params
que fica
disponível para o método chamado no controlador.
Uma versão mais flexível e mais recente é form_with
, que funciona
das duas formas.
1.1 form_with
Recebe 5 parâmetros e um bloco:
-
model
- instância de um modelo, o default é
nil
. Se passado, infere o valor descope
eurl
-
scope
- define um nome para o conjunto dos dados, na prática
coloca o nome como prefixo dos nomes dos campos e agrupa
em um hash dentro de
params
. O default énil
-
url
- local para onde os dados são enviados. A rota
correspondente envia para o controlador. O default é
nil
. -
format
- pouco usado, indica a forma de passar os dados, por
exemplo
json
. O default énil
.
O quinto parâmetro é um hash com outras opções, veja a documentação.
A opção local
, quando true
, impede o uso de envio assíncrono. O
defaul é false
.
Veja maiores detalhes em https://api.rubyonrails.org/v5.1.2/classes/ActionView/Helpers/FormHelper.html