Задать вопрос
@Stan_1

Как динамически менять routing в Rails?

Доброй ночи!

Сегодня полдня парился над одной задачей, но не имею пока решения. Допустим, я создал страницу FAQ. Для этого я создал контроллер FaqController, и настроил роутинг: get '/faq', to: "faq#index".

Все хорошо, до того момента, как пользователь захочет сменить для SEO название и сделать "host.com/voprosy-i-otvety". И задача сделать это без изменения файлов роутинга.

Я вижу три способа как это сделать, два попробовал, третий не успел. Но может я что-то фундаментально не понимаю?
1. Перехватываю ошибку "Страница не найдена". Проверяю по базе данных "меппинг", то есть смотрю, что страница voprosu-i-otvety соответствует старой Faq, и вызываю FaqController через render. Проблема: при рендере не вызывается action
2. Воспользовался вот этим советом. Ошибка - контроллер не содержит actions. Когда смотрю созданный таким образом контроллер через .inspect - вижу, что он "пустой" - в нем ничего нет. :(
3. Менять на лету routing примерно, как описано здесь. Но выглядит, как жесткий лайфхак.

Может быть, есть best way в решении такой задачи?

Заранее спасибо!
  • Вопрос задан
  • 170 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
nbekseitov
@nbekseitov
Ruby developer
А почему бы просто не создать модель pages с атрибутом url_name для хранения faq. Ну а далее использовать гем friendly_id.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Я конечно не сомневаюсь в ваших благих намериниях но с каких пор рельсовый проекты стали уровня "Все хорошо, до того момента, как пользователь захочет сменить"?
Рельсы это такая штука что те кто к ним пришел уж точно способен залезть в роут и привести его в нужное ему состояние :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы