- •Введение
- •1 Установка и запуск первого приложения
- •1.1 Установка системы Ruby on Rails
- •1.2 Разработка простейшего приложения с целью проверки работоспособности установленного по
- •2 Подготовка к выполнению проектирования ис
- •3 Настройка базы данных
- •4 Генерация временных платформ
- •5 Работа с контроллерами
- •6 Представления
- •7 Экспорт отчетов
- •8 Аутентификация пользователей
- •9 Многопользовательский режим
- •10 Разработка интерфейса
- •10.1 Стандартный Интернет-интерфейс
- •10.2 Расширение возможностей изменения интерфейса с помощью модуля Bootstrap
- •11 Элементы сложной обработки данных
- •11.1 Динамические средства поиска
- •Список использованных иточников
6 Представления
Если вы создавали новые записи в справочниках ИС, то могли заметить некоторые затруднения. В справочнике сотрудники на дату рождения стоит ограничение на -+5 лет, в итоге нельзя адекватно ввести дату. Также в некоторых ссылающихся полях, не стоит форма выбора (пример, справочник хобби сотрудников), в поля нужно вручную вводить id. Также от справочников, не стоит ссылка на главную страницу, и не локализации. Все этим проблемы решаются в файлах представлений. Приступим к разработке:
Поскольку сейчас мы не будем генерировать никаких новый файлов, а будем работать с существующими, то запустим сервер для быстрого отображения изменений. Перейдите на страницу справочника должностей. Сейчас он выглядит как на рисунке 6.1.
Рисунок 6.1 – Справочник должностей
Откройте код страницы. Путь: /app/views/dlzhs/index.html.erb. Скопируйте его куда-нибудь, например, в блокноти измените старый код на представленный ниже:
<p id="notice"><%= notice %></p>
<h1>Справочник должностей</h1>
<%= link_to 'Новая должность', new_dlzh_path %> |
<%= link_to 'Главная страница', controller: 'home_page' %>
<table>
<thead>
<tr>
<th>Название должности</th>
<th>Статус</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @dlzhs.each do |dlzh| %>
<tr>
<td><%= dlzh.d_name %></td>
<td><%= dlzh.status %></td>
<td><%= link_to 'Показать', dlzh %></td>
<td><%= link_to 'Изменить', edit_dlzh_path(dlzh) %></td>
<td><%= link_to 'Удалить', dlzh, method: :delete, data: { confirm: 'Вы уверены?' } %></td>
</tr>
<% end %>
</tbody>
</table>
Сравните оба кода. Как правило изменению подверглись только строчки без перевода.
Проделайте тоже с файлом /app/views/dlzhs/_form.hrml.erb. Код:
<%= form_for(@dlzh) do |f| %>
<% if @dlzh.errors.any? %>
<divid="error_explanation">
<h2><%= pluralize(@dlzh.errors.count, "error") %> Произошла ошибка, должностей не записана:</h2>
<ul>
<% @dlzh.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :Название_дожности %><br>
<%= f.text_field :d_name %>
</div>
<div class="field">
<%= f.label :Статус %><br>
<%= f.check_box :status %>
</div>
<div class="field">
<%= f.label :Удаление %><br>
<%= f.check_box :s_delete %>
</div>
<divclass="actions">
<%= f.submit "Добавить должность" %>
</div>
<% end %>
Файл /app/views/dlzhs/edit.hrml.erb. Код:
<h1>Редактирование должности</h1>
<%= render 'form' %>
<%= link_to 'Изменить', @dlzh %> |
<%= link_to 'Назад', dlzhs_path %>
Файл /app/views/dlzhs/new.hrml.erb. Код:
<h1>Новая должность</h1>
<%= render 'form' %>
<%= link_to 'Назад', dlzhs_path %>
Файл /app/views/dlzhs/show.hrml.erb. Код:
<p id="notice"><%= notice %></p>
<p>
<strong>Название должности:</strong>
<%= @dlzh.d_name %>
</p>
<p>
<strong>Статус:</strong>
<%= @dlzh.status %>
</p>
<p>
<strong>Удаление:</strong>
<%= @dlzh.s_delete %>
</p>
<%= link_to 'Назад', dlzhs_path %>
Сохраните все файлы и обновите страницу в браузере. Должно получиться как на рисунках 6.2,6.3,6.4,6.5,6.6.
Рисунок 6.2 – Страница index
Рисунок 6.3 – Страница show
Рисунок 6.4 – Страница edit
Рисунок 6.5 – Страница new
Рисунок 6.6 – Форма подтверждения удаления записи
Таким образом, страница была, локализована на русский язык.
Проделайте аналогичные изменения для оставшихся трех справочников вручную.
Страницы локализованы, теперь нужно решить проблемы с формами. Начнем по порядку. В таблице справочников сотрудников поле должностей отображает непонятные простому пользователю символы (Рисунок 6.7).
Рисунок 6.7 – Справочник сотрудников
Чтобы исправить обратимся к файлу /app/views/sotrs/index.html.erb, найдем строку с ссылкой на список должностей и изменим ее на строку:
<td><%= sotr.dlzh.d_name %></td>
Как показано на рисунке 6.8.
Рисунок 6.8 - Файл index.html.erbсправочника должностей
Сохраните файл. Обновите страницу в браузере. Результат должен выглядеть как на рисунке 6.9.
Рисунок 6.9 – Справочник сотрудники
Аналогичная проблема встречается в справочнике «Хобби сотрудников» (Рисунок 6.10).
Рисунок 6.10 – Справочник «Хобби сотрудников»
Решаем аналогично – меняем строки ссылок на:
<td><%= hobby_sotr.sotr.s_fam %></td>
<td><%= hobby_sotr.hobby.h_name %></td>
Код примера показан на рисунке 6.11.
Рисунок 6.11 – Код файла index.html.erbсправочника «Хобби сотрудников»
Сохраните, и обновив страницу в браузере, проверьте работу. Аналогичные действия проведите в файлах show.html.erb вышеупомянутых справочников.
Следующая проблема это выбор даты при создании новой записи в справочнике сотрудники. Интервал выбора даты колеблется от текущей даты +- 5 лет. Для решения данной проблемы откройте файл /app/views/sotrs/_form.hrml.erbи выставите параметры строки селектора, как показано на рисунке 6.12.
Рисунок 6.12 - Файл _form.html.erbсправочника «Сотрудники»
Сохраните. Обновите страницу браузера и попробуйте создать или изменить информацию о сотруднике с адекватной датой рождения.
Следующая проблема это отсутствие селекторов выбора в справочниках, где присутствуют атрибуты записей с ссылками на другие таблицы. Примеры, рисунки 6.13, 6.14.
Рисунок 6.13 – Страница добавления нового сотрудника
Рисунок 6.14 - Страница добавления нового увлечения сотрудника
Решить эту проблему, можно следующим образом. Откройте файл /app/views/sotrs/_form.html.erbи замените строку формы должности:
<%= f.text_field :dlzh_id %>
На:
<%= f.collection_select(:dlzh_id, Dlzh.all, :id, :d_name) %>
Как показано на рисунке 6.15.
Рисунок 6.15 – Код файла _form.html.erb справочника «Сотрудники»
Аналогично замените в файле /app/views/hobby_sotrs/_form.html.erb (Рисунок 6.16).
Рисунок 6.16 - Код файла _form.html.erb справочника «Хобби сотрудников»
Сохраните файлы. Проверьте работу в браузере. Результат должен получиться как на рисунке 6.17.
Рисунок 6.17–Добавления нового увлечения сотрудника
Для более удобного восприятия информации о конкретном сотруднике, в выпадающем списке лучше использовать поле не id Сотрудника, а его Фамилию. Для этого в первой выделенной на рисунке 6.16 строчке кода : вместо последнего :id используйте : s_fam.