47.15.2. Vstupní formulář

47.15.2.1. Vstupní a editační formulář

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>
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .