帮助主应用程序布局,如何为每个页面预加载元素?

时间:2010-11-29 04:04:13

标签: ruby-on-rails

我的application.html.erb(主布局)在标题的顶部有一些类别,侧边栏还有一些从数据库加载的数据。

我不想每次在每个动作中加载或调用模型,然后将其传递给视图等。

如何以全局方式加载主application.html.erb文件的数据,而不必每次都在我的控制器操作中执行此操作。

此外,如果存在逻辑,那么将在application.html.erb中加载某些内容,这取决于当前正在调用的操作?

1 个答案:

答案 0 :(得分:4)

将此“共享逻辑”放在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