В данной статье будет показан пример как сделать красивые ссылки в Rails проекте. Ссылки вида
Начнем с того что поставим рельсы последней версии, выполнив в консоли
После окончания процесса установки джема, создаем новый проект командой
Для демонстрации нам подойдет обычный скафолдинг. Давайте сгенерируем его для статей у которых будет название и текст:
Для внесения изменений в БД, выполним миграцию командой
Перед нами появится привычный интерфейс добавления постов:
Идем в
Здесь
Чтобы протестировать формирование ссылок на действие
Конечно же, код на реальном проекте будет отличаться, оборачиваться в хелперы и вызываться в гораздо более удобной форме. Такое решение подойдет не везде и в некоторых ситуациях будет крайне неудобным. Здесь также не учтена вероятность использования кириллицы
/posts/1/
будут преобразованы в /posts/1-article-name/
Подготовка
Начнем с того что поставим рельсы последней версии, выполнив в консоли
gem install rails -v=3.1.3
После окончания процесса установки джема, создаем новый проект командой
rails new nice_urls
. В результате у нас новый чистый проект со всеми установленными джемами, благодаря тому, что в конце генерации проекта автоматически был запущен bundler.Создание постов
Для демонстрации нам подойдет обычный скафолдинг. Давайте сгенерируем его для статей у которых будет название и текст:
rails g scaffold Post title:string text:text
Для внесения изменений в БД, выполним миграцию командой
rake db:migrate
. Теперь можно запускать сервер (команда rails s
) и смотреть на то, что у нас сейчас есть по адресу localhost:3000/posts
Перед нами появится привычный интерфейс добавления постов:
Красивые ссылки
Идем в
app/views/posts/index.html.erb
и находим строчку, которая формирует ссылку на show
:<%= link_to 'Show', post %>
Здесь
post
является объектом, который используется при формировании пути. Его стоит заменить такой конструкцией:post_path(:id => "#{post.id}-#{post.title.parameterize}")
Чтобы протестировать формирование ссылок на действие
show
, нужно добавить хотя бы одну статью, у которой будет задано название. Давайте воспользуемся интерфейсом для создания постов и назовем его «The test of nice urls». После создания в листинге постов ссылка должна вести уже не на /posts/1
, а на /posts/1-the-test-of-nice-urls
Заключение
Конечно же, код на реальном проекте будет отличаться, оборачиваться в хелперы и вызываться в гораздо более удобной форме. Такое решение подойдет не везде и в некоторых ситуациях будет крайне неудобным. Здесь также не учтена вероятность использования кириллицы