Рубин на рельсах:Могу ли я направить запрос непосредственно в представление?
-
21-09-2019 - |
Вопрос
У меня есть раздел администратора, в котором есть подкаталог controllers
каталог.То есть каталог app/controllers/admin/
содержит набор файлов, каждый из которых содержит контроллер для обработки отдельной части раздела администратора.
Теперь я хочу создать очень простую «домашнюю страницу администратора», которая просто говорит что-то вроде «добро пожаловать в раздел администратора», но я хочу избежать создания для этой цели всего контроллера или размещения метода «действия» для это представление в каком-то другом произвольном контроллере.
Итак, вопрос в том, есть ли способ маршрутизировать «непосредственно к представлению» — маршрутизировать непосредственно в HTML-файл?(И я не хочу перенаправляться к HTML-файлу по запрошенному пути, например /some-file.html
;Мне нужно проложить маршрут по такому пути, как /admin/
.)
Задавать здесь этот вопрос вряд ли стоит потраченного времени на создание контроллера-заглушки, но я уверен, что такая необходимость у меня снова возникнет в будущем.
Решение
Нет, ты не можешь.Почему?
Дизайн:Это просто нарушение шаблона MVC, который Rails заставляет вас использовать для вашего же блага.Всегда присутствует контроллер.И да, даже для таких страниц-заглушек требуется контроллер.В любом случае, несколько строк кода вам не повредят, и вам это снова понравится, когда вам понадобится выполнить некоторый контроль доступа.
Надеюсь, что ответил на ваш вопрос :-)
Другие советы
Как говорит Мориц, вы не можете полностью обойти контроллер, но вам не обязательно создавать целый контроллер только для этого действия.Когда мне нужна страница типа «панель мониторинга» или «посадка», я просто добавляю действие в свой ApplicationController:
class ApplicationController < ActionController::Base
def index
end
end
Затем поместите свою страницу в app/views/application/index.html.erb.
В вашем случае вы можете поместить файл application_controller.rb в каталог app/controllers/admin/ и сделать там то же самое.
Я считаю, что это идеальное место для страниц, выходящих за рамки ресурса.