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 Text Fields and Text Areas

Rails’ scaffolding included only two kinds of text fields in the body of the form:

<%= f.text_field :name %>
...
<%= f.text_area :description %>

Creating a field using text_field results in a single-line form field, generating HTML like:

<input id="person_name" name="person[name]" size="30" type="text" />

The text_area results aren’t much more complicated, though they support rows and columns rather than just a size in characters:

<textarea cols="40" id="person_description" name="person[description]"
rows="20"></textarea>

Both of these use a convention to come up with an id attribute, one that could be handy if you need to apply stylesheets. Both also use a convention to create the name attribute, type[property], which you’ll need to know if you want to create HTML forms by hand that feed into Rails controllers. The rest is fairly generic—a size of 30 characters for the text_field and 40 columns by 20 rows for the text_area.

If you want to add more attribute values to your text_area or text_field, or change the default values, you can just add named parameters. For example, to change the size of the description to 30 columns by 10 rows, you could write:

<%= f.text_area :description, :cols => 30, :rows => 10 %>

This will generate:

<textarea cols="30" id="person_description" name="person[description]"
rows="10"></textarea>

That same approach works for any attribute you want to add or modify, though you should definitely be cautious about modifying the name ...

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