You are here: Home Solidarrow Ruby on Rails Solidarrow Cheatsheets

* Form Helpers Cheatsheet

Create forms, check boxes, radio buttons, select lists and more using Rails' built-in form helpers.

Example

Controller

    def new
      @customer = Customer.new
      3.times do 
        @customer.addresses.build   
      end
    end

View

    <% form_for(@customer) do |f| %>
      <%= f.text_field :name %>
      <%= f.text_field :email %>
      <% @customer.addresses.each do |address| %>
        <% fields_for "customer[addresses][]", address do |fields| %>
          <%= fields.text_field :number %>
          <%= fields.text_field :street %>
      <% end %>
    <% end %>

HTML

    <form id="new_customer" class="new_customer" method="post" action="/customers">
    <input type="text" size="30" name="customer[name]"/>
    <input type="text" size="30" name="customer[email]"/>
    <input type="text" size="30" name="customer[addresses][][number]"/>
    <input type="text" size="30" name="customer[addresses][][street]"/>
    <input type="text" size="30" name="customer[addresses][][number]"/>
    <input type="text" size="30" name="customer[addresses][][street]"/>
    <input type="text" size="30" name="customer[addresses][][number]"/>
    <input type="text" size="30" name="customer[addresses][][street]"/>
    <input type="submit" value="Create" name="commit"/>
    </form>

params[]

    params = {
      "customer" => { "name"=>"David Pettifer",
                      "email"=>"david.p@dizzy.co.uk",
                      "addresses"=> [
                        { "number"=>"31", "street"=>"High" },
                        { "number"=>"22", "street"=>"Brook" },
                        { "number"=>"16", "street"=>"Kents" }  ]
                   } }



 

 

> RELATED ARTICLE

* Quickly debugging form helpers

Sometimes you want to quickly see the output of helper methods, and constantly clicking refresh in your browser then viewing the page source can be tiresome. Instead, use the Rails console to check helpers are doing what you want them to. > More