Помощь в создании маршрута и контроллера для статических страниц

#ruby-on-rails #ruby-on-rails-3 #routes

#ruby-on-rails #ruby-on-rails-3 #маршруты

Вопрос:

У меня есть несколько статических страниц, которые я пытаюсь создать, например, team, AboutUs, условия предоставления услуг и т.д.

Я пытаюсь создать один контроллер для обработки статических страниц, но мне не хватает некоторых ноу-хау.

Вот что я сделал:

В routes.rb, перед окончанием я добавил это:

 match "/:action" => "pages"
  

Затем я создал контроллер с именем pages_controller.rb

В настоящее время он пуст. Что мне нужно, так это распознавать запросы типа /pages /team или pages / about_us и перенаправлять на нужную статическую страницу. Как я могу это сделать?

Спасибо!

Ответ №1:

Вот как я это делаю:

 match '/pages/:page' => "pages#page"
  

Затем на основе params[:page] я визуализирую разные статические представления.
У меня это хорошо работает для сайтов с меньшим количеством статических страниц.

Конечно, вы можете явно называть свои маршруты:

 match '/about-us' => "pages#about_us"
  

а затем объявите пустой метод для каждого маршрута в вашем контроллере Pages:

 def about_us
end
  

но я предпочитаю первый способ.

Комментарии:

1. Спасибо — как выглядит ваш контроллер для первого способа, которым вы что-то делаете?

2. На самом деле, я думаю, что у меня получилось … просто пришлось немного с этим поиграть. Спасибо!

Ответ №2:

Другой возможный способ сделать это — поместить что-то вроде этого в нижней части ваших маршрутов:

map.connect ‘*path’, :controller => ‘ваше единственное имя контроллера’, :action => ‘показать’

* path в основном говорит о том, чтобы забрать все, что еще не описано в объявлениях маршрута выше.

Я почти уверен: action => ‘show’ указывает на то, что контроллер вообще не нужен (следовательно, нет необходимости в пустом методе контроллера) и просто отображает шаблон с тем же именем по тому же пути, что и ваш контроллер.

Я даже заставил его работать с вложенными каталогами…

приложение / представления / имя вашего отдельного контроллера / some-new-subdir/foo.html.erb, например, нашли бы соответствие для маршрута:

http://example.com/some-new-subdir/foo