Да, вы можете определить и установить это как before_filter
в вашем контроллере приложения. Все ваши контроллеры будут вызывать это до фильтрации. Это не редкость, когда таким образом устанавливаются глобальные переменные экземпляра.
Альтернативой является использование метода напоминания в контроллере приложения, и набор является вспомогательным методом, аналогично популярным методам current_user
. Переменная экземпляра будет затем красиво обернута вашей функцией запоминания. Например:
def menu_items
@menu_items ||= MenuItem.all
end
helper_method :menu_items
Теперь просто наберите menu_items
с вашего макета, вместо того, чтобы использовать @menu_items
напрямую.
<ч />
Полагаю, стоит упомянуть, что помещать это в контроллер приложения не нужно. Если вы собираетесь использовать это только в своем представлении / макете, вы можете поместить его непосредственно в вспомогательный модуль, такой как LayoutHelper. Вам нужно будет использовать helper :all
(или хотя бы helper :layout
) в контроллере приложения.
Это отчасти личное предпочтение - вам могут или не нравятся вызовы ActiveRecord в ваших помощниках. Но, если есть время для этого, это будет все.