O'Reilly logo

Learning Rails: Live Edition by Edd Dumbill, Simon St. Laurent

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Creating Radio Buttons

Creating radio buttons is a little more complicated and not something that the scaffolding will do for you. Just as when you create radio buttons in HTML, radio buttons in Rails are created as independent objects, united only by a naming convention. Radio buttons are often effectively used for small selection lists, so this example will focus on the country field, offering just a few options.

For the first round, we’ll just create some linked buttons by brute force, as shown in Example 6-3.

Example 6-3. Asking Rails to create a specific list of linked radio buttons

<p>
    <b>Country</b><br />
    <%= f.radio_button :country, 'USA' %> USA<br />
    <%= f.radio_button :country, 'Canada' %> Canada<br />
    <%= f.radio_button :country, 'Mexico' %> Mexico<br />
</p>

This will generate the result shown in Figure 6-2.

Simple radio buttons added to a Rails-based form

Figure 6-2. Simple radio buttons added to a Rails-based form

The HTML this created is pretty simple:

<p>
    <b>Country</b><br />
    <input id="person_country_usa" name="person[country]" type="radio"
value="USA" /> USA<br />
    <input id="person_country_canada" name="person[country]" type="radio"
value="Canada" /> Canada<br />
    <input id="person_country_mexico" name="person[country]" type="radio"
value="Mexico" /> Mexico<br />
</p>

If the underlying :country object had had a value that matched any of these, Rails would have added a checked="checked" attribute to the input element. Since ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required