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 … end
Nyní 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>