Вам нужно написать перехват всех
match '*page' => 'pages#show'
, а затем обработать путь к странице в вашем контроллере страниц
def show
if params[:page]
@page = Page.find_by_page(params[:page])
else
@page = Page.find(params[:id])
end
...
, если вы используете Omniauth или другую библиотеку rails, которая использует свой собственный перехватвсе, что вам может понадобиться, чтобы исключить некоторые URL-адреса из этого, используйте лямбду в вашем ограничении
match '*page' => 'pages#show', :constraints => lambda{|req| !req.env["REQUEST_URI"].include? "auth"}
Если вы хотите иметь вложенные пути (например, «смартфоны / андроид»), вам нужно разделить страницу:парам друг от друга и обрабатывать сегменты пути в вашем контроллере
path = :page.split("/") // you now have an array of path segments you can use in your controller