Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_по созданию ИС с помощью RoR_2018.docx
Скачиваний:
9
Добавлен:
17.06.2023
Размер:
12.5 Mб
Скачать

6 Представления

Если вы создавали новые записи в справочниках ИС, то могли заметить некоторые затруднения. В справочнике сотрудники на дату рождения стоит ограничение на -+5 лет, в итоге нельзя адекватно ввести дату. Также в некоторых ссылающихся полях, не стоит форма выбора (пример, справочник хобби сотрудников), в поля нужно вручную вводить id. Также от справочников, не стоит ссылка на главную страницу, и не локализации. Все этим проблемы решаются в файлах представлений. Приступим к разработке:

  1. Поскольку сейчас мы не будем генерировать никаких новый файлов, а будем работать с существующими, то запустим сервер для быстрого отображения изменений. Перейдите на страницу справочника должностей. Сейчас он выглядит как на рисунке 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 – Форма подтверждения удаления записи

Таким образом, страница была, локализована на русский язык.

  1. Проделайте аналогичные изменения для оставшихся трех справочников вручную.

  2. Страницы локализованы, теперь нужно решить проблемы с формами. Начнем по порядку. В таблице справочников сотрудников поле должностей отображает непонятные простому пользователю символы (Рисунок 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 вышеупомянутых справочников.

  1. Следующая проблема это выбор даты при создании новой записи в справочнике сотрудники. Интервал выбора даты колеблется от текущей даты +- 5 лет. Для решения данной проблемы откройте файл /app/views/sotrs/_form.hrml.erbи выставите параметры строки селектора, как показано на рисунке 6.12.

Рисунок 6.12 - Файл _form.html.erbсправочника «Сотрудники»

Сохраните. Обновите страницу браузера и попробуйте создать или изменить информацию о сотруднике с адекватной датой рождения.

  1. Следующая проблема это отсутствие селекторов выбора в справочниках, где присутствуют атрибуты записей с ссылками на другие таблицы. Примеры, рисунки 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.