How to control parameters through “a name attribute” of form in Rails

Tomoharu Tsutsumi
2 min readSep 16, 2019

We can control parameters through a name attribute of form. The send parameters are up to the form of the name attribute. In this article, I show which form of the name attribute makes which parameter. Basically, a vacant array before a value encloses the whole hash parameter and it can be used only one time, while the vacant array after the value encloses value itself with an array and it can be used twice.

Cases1

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[name]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[page_number]' %></div>

is

"book"=>{"name"=>"test", "page_number"=>"1"}

Cases2

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[][name]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[][page_number]' %></div>

is

"book"=>[{"name"=>"test", "page_number"=>"1"}]

Cases3

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[name][]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[page_number][]' %></div>

is

book"=>{"name"=>["test"], "page_number"=>["1"]}

Cases4

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[name][][]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[page_number][][]' %></div>

is

"book"=>{"name"=>[["test"]], "page_number"=>[["1"]]}

Cases5

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[][name][]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[][page_number][]' %></div>

is

"book"=>[{"name"=>["test"], "page_number"=>["1"]}]

Cases6

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[][][name]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[][][page_number]' %></div>

is

"book"=>[{"name"=>"test", "page_number"=>"1"}]

Cases7

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[name][][][]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[page_number][][][]' %></div>

is

"book"=>{"name"=>[], "page_number"=>[]}

Cases8

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[][name][][]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[][page_number][][]' %></div>

is

"book"=>[{"name"=>[["test"]], "page_number"=>[["1"]]}]

Cases9

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[][][name][]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[][][page_number][]' %></div>

is

"book"=>[{"name"=>["test"], "page_number"=>["1"]}]

Cases10

<div class="field"><%= form.label :name %><%= form.text_field :name, name: 'book[][][][name]' %></div><div class="field"><%= form.label :page_number %><%= form.number_field :page_number, name: 'book[][][][page_number]' %></div>

is

"book"=>[{"name"=>"test", "page_number"=>"1"}]

If you think this article good, please follow me!

I update articles once a week!

https://twitter.com/tomoharutsutsum

--

--

Tomoharu Tsutsumi
Tomoharu Tsutsumi

Written by Tomoharu Tsutsumi

5+ years Full Stack SWE (Ruby, Go, TypeScript, JavaScript) | Former Founding Engineer of AI Startup in Canada

No responses yet