Форум программистов, компьютерный форум, киберфорум
Ruby on Rails
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для danek130995
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137

Добавление ЧПУ в ROR

05.10.2015, 23:00. Показов 2754. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане! Я совершенный новичок в ROR. Недавно с сделал свой первый блог по этому руководству. Дело вот в чем:мне дали задание добавить ЧПУ в свой блог, но я не знаю, как это сделать. Задание звучит так: Требуется доработать блог таким образом, чтобы каждая страница блога могла иметь свой ЧПУ, должна быть возможность доступа к страницам блога по ЧПУ, задаваемым в административной панели.
Что имеется здесь ввиду? Административная панель сайта? Т.е. я должен в своем блоге сделать какую-то панель, и в ней назначать каждой странице свой любой ЧПУ? Или тут имеется ввиду что-то другое? Помогите пожалуйста разобраться, спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2015, 23:00
Ответы с готовыми решениями:

Slim partials RoR
Добрый день. Пытаюсь партиал подключить. Есть файл new.slim в той же директории _form.slim. Сам new.slim: h1 New User = render...

Интернет магазин на RoR
Всем доброго времени суток, дамы и господа. Хочу сделать интернет магазин на рельсах. Собственно, единственная загвоздка - создание...

Построение графиков в RoR
И такс, может, быть кто либо сталкивался..мне нужно посторить график, изменений данных в клонках curr_us и curr_eu с mysql таблицы со...

8
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
06.10.2015, 07:53
Наиболее ходовая расшифровка ЧПУ - числовое программное управление. Это такие промышленные станки с компом внутри. К сайту это едва ли можно связать. Вы либо ослышались, либо ищите альтернативную трактовку аббревиатуры ЧПУ.
1
23 / 23 / 13
Регистрация: 06.03.2013
Сообщений: 45
06.10.2015, 08:03
ЧПУ -- это человеко-понятные урлы.

Т.е. не http://blog.com/post?id=42 или http://blog.com/post/42 и тд, а http://blog.com/post/hello-world, http://blog.com/other-cool-post или http://blog.com/moj-novij-post.html.

Нужно что бы при создании нового поста в блоге была возможность задать этот урл.
1
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
06.10.2015, 08:06
Цитата Сообщение от arni Посмотреть сообщение
альтернативную трактовку аббревиатуры ЧПУ
ЧПУ (Человеко-понятный урл) — жаргонное название веб-адреса, содержащего читаемые слова, а не аббревиатуры или идентификаторы

Добавлено через 31 секунду
Опоздал..
1
 Аватар для danek130995
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
06.10.2015, 09:21  [ТС]
arni, в данном случае имеется ввиду Человеко-понятный URL, забыл расшифровать.
brevis, Black Fregat, я знаю, что это такое, спасибо) Я как раз хотел узнать, как это можно сделать?
brevis, Вы думаете, под административной панелью здесь имеется ввиду рамка для создания нового поста? И чтобы в ней была возможность задать свое название?
Буду рад помощи или ссылкам на ресурсы для новичков, как это можно реализовать.
Спасибо заранее!
0
23 / 23 / 13
Регистрация: 06.03.2013
Сообщений: 45
06.10.2015, 10:36
Я думаю, что должно быть так:
Миниатюры
Добавление ЧПУ в ROR  
1
 Аватар для danek130995
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
06.10.2015, 11:16  [ТС]
brevis, переделал вьюху, как у вас. как бы это еще в коде реализовать..
0
 Аватар для danek130995
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
08.10.2015, 10:05  [ТС]
Уважаемые brevis, Black Fregat, arni, у меня почти получилось. Помогите мне пожалуйста с последним моментом. Вот что я сделал:
1)В routers.rb добавил новый маршрут
Rails
1
get 'novaya_statya' => 'articles#new', as: :novaya_statya_chpu
теперь у меня есть возможность перейти на страницу создания статьи по ссылке http://localhost:3000/novaya_statya
2) Далее, я добавил в БД с посмощью миграции новое поле slug, добавил возможность ввода его из формы, все вводится и работает.
3)Я добавил маршрут:
Rails
1
get 'articles/:slug' => 'articles#show', as: :article_chpu
Т.е. я интуитивно надеюсь, что смогу по slug статьи открыть ее.
С помощью команды rake routes я убедился, что все маршруты появились:
novaya_statya_chpu GET /novaya_statya(.:format) articles#new
article_chpu GET /articles/:slug(.:format) articles#show

4)В articles_controller я изменил запись
Rails
1
2
3
def show
    @article = Article.find(params[:id])
  end
на

Rails
1
2
3
def show
    @article = Article.find(params[:slug])
  end
После всех манипуляций, при попытке, например, перейти на http://localhost:3000/articles/first_slug получаю ошибку
Couldn't find Article with 'id'=first_slug
Что мне осталось сделать, чтобы дать ему понять, что я хочу не только по id переходить, а по id и slug?

Добавлено через 9 минут
И почему, когда я в index.html.erb меняю
Rails
1
<%= link_to 'New article', new_article_path %>
на
Rails
1
<%= link_to 'New article', novaya_statya_chpu_path %>
, только тогда работает? А если оставить как было, то выскакивает та же ошибка с id. Ведь старый маршрут то
new_article GET /articles/new(.:format) articles#new
не использует id.

Добавлено через 11 часов 17 минут
Сейчас изменил index.html.erb, написал
Rails
1
 <td><%= link_to 'Show', article_chpu_path(article) %></td>
Теперь страница открывается, но в адресной строке по прежнему старый путь. Пробовал писать вручную slug, тогда ошибка
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.10.2015, 11:58
Лучший ответ Сообщение было отмечено danek130995 как решение

Решение

Попробуйте другой подход.
Верните маршруты в исходное состояние, когда все работало по id
В модели определите метод to_param
Rails
1
2
3
4
5
6
7
class Article < ActiveRecord::Base
  attr_accessible :slug
 
  def to_param
    slug # теперь в хелперы link_to и пр. будем возвращать не @article.id.to_s, а @article.slug
  end
end
В котроллере ArticlesController
Rails
1
2
3
4
def show
  # @article = Article.find(params[:id])
  @article = Article.find_by(slug: params[:slug]) # лучше определить метод Article#find_by_slug(slug)
end
При условии, что поле :slug обязательное и уникальное. Иначе измените методы to_param и поиск уже делаете сначала по :slug, если нет результатов, то по :id. И не забудьте добавить индекс для :slug
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2015, 11:58
Помогаю со студенческими работами здесь

Тип связи в RoR
Вопрос по activerecord. есть таблица пользоветелей &quot;users&quot; и таблица сообщений &quot;msgs&quot; Таблица пользователей определа как class...

apache + RoR + MySql
Здравствуйте, подскажите или поделитесь линком где описана установка(Ubuntu 10.10). гуглил и что-то не нашёл.

WYSIWYG для представлений RoR
Всем доброго времени суток! При изучении RoR возник вопрос: можно ли использовать какие-нибудь WYSIWYG-редакторы для...

Просмотр книг на сайте RoR
Как реализовать, чтоб можно было просматривать некоторые файлы: pdf, djvu, fb2, txt?

Установка RoR на хостинге sweb
От саппорта получил ответ, цитирую: &quot;Приложения на Ruby on Rails создаются без каких-либо дополнительных настроек.&quot; Для меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru