Vstupní formulář předvedu na konkrétním příkladu datového modelu Person (pl. people). Jedná se o tabulku lidí kteří jsou například našimi zákazníky nebo zaměstnanci.
Nejdříve definujeme metody new a create v řadiči PeopleController (app/controller/people_controller.rb):
class PeopleController < ApplicationController
…
def new
@person = Person.new()
end
def create
@person = Person.new(params[:person])
if @person.save
flash[:notice] = 'Person was succesfully created.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end
…
endNyní si ukážeme jak vypadá pohled new který uvedené metody používají. Pro snadnější použití mám tento pohled strukturován do dvou souborů. V prvním souboru app/views/people/new.rhtml je:
<h1>Nový člověk</h1>
<% form_for :person, @person, :url => { :action => 'create' } do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag "Zapsat" %>
<% end %>
<%= link_to 'Zpět', :action => 'list' %>Vlastní pole formuláře jsou uložena v samostatném soubru app/views/people/_form.rhtm.
<%= error_messages_for 'person' %>
<!--[form:person]-->
<table>
<tr>
<th><label for="person_firstname">Jméno</label></th>
<td><%= f.text_field :firstname %></td>
</tr>
…
</table>
<!--[eoform:person]-->Nejdříve starý přístup. Máme datový model Person (pl. people) a chceme vytvořit formulář pro zadávání nového člověka. V řadiči People Controller (app/controller/people_controller.rb) vytvoříme dvě metody, new a create.
K těmto metodám definujeme pohled rozdělený do dvou částí. První část je v souboru
<h1>Nový člověk</h1> <% form_tag :action => 'create' do %> <% render :partial => 'form' %> <% submit_tag "Vytvořit" %> <% end %> <%= link_to 'Zpět', :action => 'list' %gt;
Druhá část, tedy samotná vstupní pole jsou v samostatném souboru app/views/people/_form.rhtml
<%= error_messages_for 'person' %>
<table>
<tr>
<th><label for="person_pin">Osobní číslo:</label></th>
<td><%= text_field 'person', 'pin' %></td>
</tr>
…
</table>