Читаем Первые 20 часов. Как быстро научиться… чему угодно полностью

# Converts page name into post slug

def slugify (content)

content.downcase.gsub (/ /, '-'). gsub (/ [^a-z0–9-] /, "). squeeze ('-')

end

Теперь я могу использовать метод slugify для преобразования строк типа «Заголовок Страницы» в «заголовок_страницы», которые можно использовать в составе интернет-адреса.

Кроме того, если мы храним слаг вместе с заголовком страницы, то можем использовать его для извлечения записи страницы при помощи параметра url.

Я добавил это поле к классу DataMapper:

property: slug, String

Теперь при создании страницы мы можем превратить ее заголовок в слаг, сохранить его в базе данных и использовать для демонстрации страницы, когда потребуется ее извлечь. Именно так приложение узнаёт, какую страницу показывать.

<p>Создание страниц</p>

Я начал разрабатывать список необходимых маршрутов. «Главный» маршрут прост: я перенаправляю его к слагу /home/, поскольку хочу, чтобы главная страница отображала содержимое соответствующей записи.

Маршрут «создать страницу» связан с небольшим полем ввода в верхней части бокового поля. Пользователь вводит заголовок страницы в поле ввода и щелкает по кнопке. Система считывает заголовок страницы, преобразует его в слаг, затем сохраняет в базе данных заголовок, слаг и время создания. После этого система посылает запрос GET, содержащий слаг, и отображает новую страницу.

В маршруте «создать страницу» есть маленькая, но очень важная деталь: что если страница уже существует? Я не хочу переписывать ее заново, если она содержит данные. Случайная потеря данных недопустима.

К счастью, DataMapper разрешает эту проблему при помощи встроенного метода. first_or_create. Если страница уже существует, DataMapper не переписывает ее, а Sinatra перенаправляет браузер к существующей странице. Проблема решена.

Маршрут «отобразить страницу» считывает слаг в URL, извлекает запись из базы данных, а затем отображает информацию в области основного содержания. Позже я добавлю красивое форматирование, но теперь мне просто нужно, чтобы программа работала.

<p>Редактирование страниц</p>

Редактирование страниц включает два отдельных маршрута. Первый маршрут запросом GET вызывает страницу, которую хочет отредактировать пользователь, а затем отображает содержимое соответствующей записи базы данных в форме, удобной для редактирования.

Для отображения страниц приложение использует шаблон ERB, который обычно состоит из команд HTML + Ruby. ERB позволяет программисту писать HTML, включающий изменяемые элементы. Поскольку ERB обрабатывает страницу до того, как она появляется перед пользователем, текст на странице можно менять при каждой загрузке, основываясь на командах Ruby шаблона.

Кнопка «Сохранить» на экране редактирования посылает запрос POST приложению, которое обновляет запись Page.

<p>Удаление страниц</p>

Удаление страниц требует осторожности: нельзя забывать, что случайная потеря данных неприемлема. Собираясь удалить страницу, вы должны быть абсолютно уверены, что пользователь хочет именно этого.

Неправильно было бы напрямую связать кнопку «Удалить» с маршрутом DELETE приложения. При таком подходе страница удалится даже при случайном щелчке по кнопке.

Предпочтительнее разбить процесс на два этапа. Щелчок по кнопке «Удалить» на экране отсылает пользователя к окну подтверждения, где отображается заголовок страницы, которую пользователь намерен удалить. Если все правильно, пользователь щелкает по кнопке подтверждения, посылая запрос DELETE. Если кнопка «Удалить» нажата случайно, можно щелкнуть по кнопке «Отмена» или кнопке браузера «Назад».

<p>Список всех страниц</p>

Кнопка «Показать список страниц» направляет пользователя к слагу /all/, который отличается от слагов обычных страниц.

Вместо того чтобы извлечь одну запись, DataMapper извлекает все записи Page базы данных. Шаблон ERB для Page содержит условный цикл, который создает список всех извлеченных страниц. Каждый элемент списка содержит заголовок страницы, отображаемый в виде ссылки на соответствующий странице слаг. Щелчок по ссылке направляет пользователя на конкретную страницу.

<p>Первый запуск приложения</p>

Итак, у меня есть основные функции, однако есть и проблема: во время тестирования приложения попытка перейти к главной странице вызывает сообщение об ошибке. Программа пытается найти запись Home в базе данных, но ее не существует, поскольку я запустил приложение в первый раз!

Выход — создать «однократный процесс управления» при помощи программы под названием Rake. Программы Rake хранятся в папке Rakefile, которая находится в корневом каталоге приложения.

Файлы Rake работают как обычные приложения Ruby, но с одним исключением: они существуют вне вашей основной программы, и вы должны запускать их вручную.

Перейти на страницу:

Похожие книги

Древний Египет
Древний Египет

Прикосновение к тайне, попытка разгадать неизведанное, увидеть и понять то, что не дано другим… Это всегда интересно, это захватывает дух и заставляет учащенно биться сердце. Особенно если тайна касается древнейшей цивилизации, коей и является Древний Египет. Откуда египтяне черпали свои поразительные знания и умения, некоторые из которых даже сейчас остаются недоступными? Как и зачем они строили свои знаменитые пирамиды? Что таит в себе таинственная полуулыбка Большого сфинкса и неужели наш мир обречен на гибель, если его загадка будет разгадана? Действительно ли всех, кто посягнул на тайну пирамиды Тутанхамона, будет преследовать неумолимое «проклятие фараонов»? Об этих и других знаменитых тайнах и загадках древнеегипетской цивилизации, о версиях, предположениях и реальных фактах, читатель узнает из этой книги.

Борис Александрович Тураев , Борис Георгиевич Деревенский , Елена Качур , Мария Павловна Згурская , Энтони Холмс

Культурология / Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / История / Детская познавательная и развивающая литература / Словари, справочники / Образование и наука / Словари и Энциклопедии
Нейрогастрономия. Почему мозг создает вкус еды и как этим управлять
Нейрогастрономия. Почему мозг создает вкус еды и как этим управлять

Про еду нам важно знать все: какого она цвета, какова она на запах и вкус, приятны ли ее текстура и температура. Ведь на основе этих знаний мы принимаем решение о том, стоит или не стоит это есть, удовлетворит ли данное блюдо наши физиологические потребности. На восприятие вкуса влияют практически все ощущения, которые мы испытываем, прошлый опыт и с кем мы ели то или иное блюдо.Нейрогастрономия (наука о вкусовых ощущениях) не пытается «насильно» заменить еду на более полезную, она направлена на то, как человек воспринимает ее вкус. Профессор Гордон Шеперд считает, что мы можем не только привыкнуть к более здоровой пище, но и не ощущать себя при этом так, будто постоянно чем-то жертвуем. Чтобы этого добиться, придется ввести в заблуждение мозг и заставить его думать, например, что вареное вкуснее жареного. А как это сделать – расскажет автор книги.Внимание! Информация, содержащаяся в книге, не может служить заменой консультации врача. Перед совершением любых рекомендуемых действий необходимо проконсультироваться со специалистом.В формате PDF A4 сохранён издательский дизайн.

Гордон Шеперд

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / Медицина и здоровье / Дом и досуг