This is Devhints.io cheatsheets — a collection of cheatsheets I've written.

# Form helpers

## Form builder

    - form_for @post do |f|

Field names will be prefixed with `post` (the class name), and values will be derived from this object (eg, `f.text_field :name` from `@post.name`).

### Options

    - form_for @post, |
      url: { method: 'put', action: 'create' }, |
      html: { class: 'nifty_form' } |
      do |f|

## Fields

### Text

    f.text_field :title
    f.text_area :body, size: '60x12'

### Checkbox

    f.check_box :remember_me
    f.label :remember_me, "Remember me"

### Radio

    f.radio_button :gender, 'male'
    f.label :gender_male, "Male"

    f.radio_button :gender, 'female'
    f.label :gender_female, "Female"

### Label

    f.label :title
    f.label :title, "Title"
    f.label :title, "Title", class: "title"
    f.label(:post, :terms) { "Accept terms" }

### Submit button

    f.submit "Create"

### Hidden fields

    f.hidden_field :id

## Misc

### The model

    f.object

### Fields for

    = form_for @post do |f|
      = fields_for :author, @post.author do |ff|
        = ff.text_field :name

### Select dropdowns

    f.select :city_id, [['Lisbon',1], ['Madrid',2], ...], 4
    # (4 = selected)

    options_for_select [['Lisbon',1], ['Madrid',2], ...], 4
    # Just makes <option> tags

### Collections

    f.collection_radio_buttons :author_id, Author.all, :id, :name_with_initial
    f.collection_select :city_id, City.all, :id, :name
    # (field, collection, value_key, label_key)

### Time select

    f.time_zone_select :time_zone
    f.date_select :birthday

### I18n

    helpers:
      submit:
        # helpers.submit.<action>
        create: "Create a %{model}"
        update: "Confirm changes to %{model}"

        # helpers.submit.<model>.<action>
        article:
          create: "Publish article"
          update: "Update article"

      # helpers.label.<model>.<field>
      label:
        post:
          body: "Your body text"

### Outside `f`

    radio_button("post", "category", "rails")
    radio_button("post", "category", "java")

    # picks from @post.category
    # <input type="radio" id="post_category_rails" name="post[category]"
    #  value="rails" checked="checked" />

### Reference

    select(method, choices = nil, options = {}, html_options = {}, &block)
      choices == [ ['label', id], ... ]

    submit(value=nil, options={})

Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. Suggestions and corrections? Send them in. I'm Rico Sta. Cruz. Check out my Today I learned blog for more.