我的application.html.erb(主布局)在标题的顶部有一些类别,侧边栏还有一些从数据库加载的数据。
我不想每次在每个动作中加载或调用模型,然后将其传递给视图等。
如何以全局方式加载主application.html.erb文件的数据,而不必每次都在我的控制器操作中执行此操作。
此外,如果存在逻辑,那么将在application.html.erb中加载某些内容,这取决于当前正在调用的操作?
答案 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