1

У меня есть несколько хороших контроллеров. Для дальнейшего DRY их, я хотел бы, чтобы они делились мнениями, так что несколько контроллеров используют одни и те же изменения и новые представления. Поэтому я создал каталог шаблонов, называемый ресурсами, который содержит общий вид edit и new.Как определить шаблоны для нескольких контроллеров

У меня есть несколько контроллеров, которым я хотел бы поделиться этими видами (у них есть свои шаблоны и формы для показа). Каждый из этих контроллеров в настоящее время наследуется от базы ResourceController. По умолчанию, если какой-либо из этих контроллеров отсутствует в представлении, Rails будет следовать цепочке наследования, ищущей представление, поэтому, если мой контроллер NewsItems не имеет шаблона edit, Rails автоматически ищет один в resources. Тем не менее, я хотел бы удалить необходимость для всех этих контроллеров наследовать от одного контроллера. В моем случае это добавляет дополнительный контроллер в цепочку наследования, которую я не хочу делать. Я бы предпочел переместить интроспекцию ресурсов, совместно используемую контроллерами, в mixin.

Однако, это будет означать, что Rails больше не выглядит в каталоге представлений resources для отсутствующих шаблонов.

Я не хочу отображать те же «ресурсы/редактировать and ресурсов/новых` шаблонов в каждом контроллере, так есть способ объявить, какой шаблон использовать для какого действия декларативным способом? Предпочтительно в смеси.

ответ

2

Похоже, что вы можете найти prepend_view_path. Таким образом, вы можете иметь, например, Модуль MyResources озабоченности включить в контроллерах:

module MyResources 
    extend ActiveSupport::Concern 

    included do 
    prepend_view_path File.join('app', 'views', 'resources') 
    end 
end 

Тогда в любом контроллере, который вы включаете MyResources, первый путь для проверки зрения шаблонов будет app/views/resources/, а затем с помощью обычных мест.

+0

Конечно. Большое спасибо. – Undistraction