Динамический URL-> Контроллер, отображающийся для маршрутов в направляющих

Я хотел бы смочь отобразить URL на Контроллеры динамично на основе информации в моей базе данных.

Я надеюсь делать что-то функционально эквивалентное этому (принимающий a View модель):

map.route '/:view_name',
    :controller => lambda { View.find_by_name(params[:view_name]).controller }

Другие предложили динамично восстановить маршруты, но это не будет работать на меня, поскольку могут быть тысячи Представлений, которые отображаются на тот же Контроллер

14
задан Community 23 May 2017 в 12:34
поделиться

1 ответ

Итак, я думаю, вы спрашиваете, если у вас есть таблица представлений и модель представления для нее, где таблица выглядит как

id | name | model
===================
1  | aaa  | Post
2  | bbb  | Post
3  | ccc  | Comment

Вам нужен URL-адрес of / aaa, чтобы указать на Post.controller - это правильно?

Если нет, то то, что вы предлагаете, кажется прекрасным, если предположить, что это работает.

Вы можете отправить его в действие catch all и заставить действие посмотреть URL-адрес, запустить find_by_name и затем оттуда вызвать правильный контроллер.

def catch_all
  View.find_by_name('aaa').controller.action
end

Обновление

Вы можете использовать redirect_to и даже отправлять параметры. В приведенном ниже примере я отправляю параметры поиска

def catch_all
  new_controller = View.find_by_name('aaa').controller
  redirect_to :controller => new_controller, :action => :index, 
      :search => params[:search] 
end
0
ответ дан 1 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

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