Hi, just started reading Getting Started with Rails — Ruby on Rails Guides and this code example: <%= form_for(@post) do |f| %> ... <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name %> </div> <div class="field"> <%= f.label :title %><br /> <%= f.text_field :title %> </div> <div class="field"> <%= f.label :content %><br /> <%= f.text_area :content %> </div> <div class="actions"> <%= f.submit %> </div>
In case we need to show a field in several templates, we need to duplicate its type (text_field etc). The type belongs to the field, so why not remove this repetition by making a self-contained "field" like f.name, or f.label, or f.content, that would encompass rendering logic and would spit out proper form snippet: <%= f.name %> Then if someone wanted to override how a certain field is rendered, they could spell everything out as above.