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

Команда DataMapper.finalize указывает приложению, чтобы оно создало эти поля, если они еще не существуют в действующей базе данных.

Теперь, когда база данных есть, пора выяснить, какие маршруты должна будет обслуживать среда разработки Sinatra. Вот какой у меня получился список:

# Show home page

g e t '/'

# Creates new note from "new page" form

p o s t '/'

# Displays requested note

get '/: url/'

# Edits requested note

get '/: url/edit'

# Saves user edits to note

p o s t '/: u r l /e d it'

# Deletes specified note

delete '/: url/'

# List all pages in database

get '/all/'

# Error handling

not_found

error

Это очень полезный список. Мое приложение будет строиться вокруг команд, которые я создам для каждого маршрута.

<p>Слаги, везде слаги!</p></span><span>

Помните, я сравнивал базу данных с магической стопкой учетных карточек, которую вы можете просматривать так, как вам удобно? Нам нужен способ поиска конкретных записей, и именно потому в этих маршрутах встречается url. Содержание параметра url указывает базе данных, какую запись следует извлекать.

В качестве параметра можно использовать заголовок страницы, но тут есть одна проблема: браузеры не любят в интернет-адресах такие вещи, как пробелы, заглавные буквы и специальные символы (например, $ и %). В заголовках такие символы встречаются достаточно часто, поэтому от них нужно избавиться.

Строка, однозначно определяющая страницу сайта, называется слагом [43]. Слаг моей страницы будет основан на заголовке и подчиняться правилам, приемлемым для интернет-адресов.

1. Все символы строчные.

2. Никаких специальных символов — только буквы и цифры.

3. Никаких пробелов — все пробелы должны быть заменены на подчеркивание.

Для этого нужно создать метод, который берет заголовок страницы и форматирует его в слаг. Сложные замены выполняются при помощи метода программирования, получившего название регулярных выражений, который преобразует или находит текст в строках в соответствии с установленными правилами [44].

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

# 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></span><span>

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

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

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

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

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

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

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

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

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

100 способов избавиться от комплексов
100 способов избавиться от комплексов

Комплексы… А у кого их нет? Редкий человек может смело заявить, что комплексы не мешают ему жить и радоваться жизни по той простой причине, что их у него просто нет. Зато наверняка каждый знает, что тот или иной вредный комплекс мешает ему в жизни. На комплексы взваливают вину за неудачи и провалы, не пытаясь, однако, бороться с ними. А это обязательно надо сделать, особенно сейчас, когда вы держите в руках это издание. Автор подробно рассматривает все известные комплексы и предлагает свои методы борьбы с ними. Не упустите шанс обрести радость в жизни, пока борьба с комплексами возможна.Хотя в заглавии громко заявлено о ста способах, я полагаю, что это излишняя роскошь, вполне достаточно будет и одного, если он поможет вам почувствовать себя полноценным и уверенным в себе человеком. Поэтому в своей книге я не буду заострять внимание на ста способах избавления от комплексов – лучше подробнее остановлюсь на самих комплексах и причинах, их порождающих. Как избавиться от ста комплексов, что делать, чтобы снова ощутить радость жизни? Что ж, ответ на этот вопрос вы отыщете в книге!Важное замечание: комплексы не появляются на ровном месте, их появление всегда чем-то обусловлено. Поэтому, если вы хотите задушить в себе "дракона", не кидайтесь слепо в бой; вам надо отыскать его логово, понять его природу, только тогда вы сможете победить его! Комплексы можно сравнить с сорняками, вырастающими из семечка… именно эти семена вы должны будете отыскать в себе и избавиться от них! В моей книге в алфавитном порядке представлены причины, приводящие к возникновению комплекса неполноценности у человека. Для того чтобы узнать, как избавиться от своей проблемы, вы должны отыскать "свой" комплекс и прочитать все, что к нему относится. Надеюсь, мои советы помогут вам наладить свою жизнь!

Глеб Иванович Черниговцев

Карьера, кадры / Самосовершенствование / Эзотерика
Самоанализ
Самоанализ

Карен Хорни (1885-1952) известна не только как яркая представительница неофрейдизма (направления, возникшего вследствие возрастающей неудовлетворенности ортодоксальным психоанализом), но и как автор собственной оригинальной теории, а также одна из ключевых фигур в области женской психологии. Она единственная женщина-психолог, чье имя значится в ряду основателей психологической теории личности. В своей работе «Невротическая личность нашего времени» (1937), ознаменовавшей отход от классической фрейдовской теории, она сосредотачивается не на прошлых, а на существующих в данный момент конфликтах личности и включает в сферу своего внимания социальные и культурные факторы развития неврозов. Книга «Самоанализ» (1942) стала первым руководством по самоанализу, предназначенным помочь людям самостоятельно преодолевать собственные проблемы. Для психологов, психотерапевтов, социальных работников, педагогов и всех интересующихся вопросами психологии и развития личности.

Karen Horney , Антон Олегович Калинин , Карен Хорни , Л. Рон Хаббард , Рон Лафайет Хаббард

Медицина / Психология и психотерапия / Самосовершенствование / Психология / Эзотерика / Образование и наука