Помогите с основным макетом приложения, как предварительно загрузить элементы для каждой страницы? - PullRequest
1 голос
/ 29 ноября 2010

Мой application.html.erb (основной макет) имеет несколько категорий в верхней части заголовка, а на боковой панели есть еще несколько данных, загружаемых из базы данных.

Я не хочу загружать или вызывать модели каждый раз в каждом действии, а затем передавать это в представление и т. Д.

Как загрузить данные для основного файла application.html.erb глобальным способом, и нет необходимости делать это каждый раз в действиях моего контроллера.

Кроме того, что, если есть логика, такая, что определенные вещи будут загружены в application.html.erb, который зависит от текущего вызываемого действия?

1 Ответ

4 голосов
/ 29 ноября 2010

Поместите эту «общую логику» в application_controller.rb, поскольку все ваши контроллеры расширяют ее.

Используйте before_filter для выполнения метода, в котором вы назначаете некоторые данные @instance_field, которые будут доступны в представлениях. Пример, который делает @current_user доступным в каждом представлении:

class ApplicationController < ActionController::Base
    before_filter :current_user

    def current_user
        @current_user ||= session[:current_user_id] && User.find(session[:current_user_id])
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...