如何在 ActionView 中访问已在 ApplicationController 中定义的变量?
就我而言,我想让我的布局响应在 ApplicationController 中设置的变量。
如果它是一个视图,与控制器的操作相关联,我只需要在相应的操作中设置一个实例 var 就可以了。但是在布局中访问这些数据对我来说是新鲜事。
谢谢!
如何在 ActionView 中访问已在 ApplicationController 中定义的变量?
就我而言,我想让我的布局响应在 ApplicationController 中设置的变量。
如果它是一个视图,与控制器的操作相关联,我只需要在相应的操作中设置一个实例 var 就可以了。但是在布局中访问这些数据对我来说是新鲜事。
谢谢!
您可以在 ApplicationController 中创建一个方法,并在您的布局中调用该方法。这就是 restful_authentication(和许多其他身份验证插件)如何创建和管理current_user
. 所以在 ApplicationController 中:
def current_user
@current_user ||= User.find_by_id(session[:user_id])
end
在您的布局中:
<% if current_user %>
<%= link_to 'logout', logout_path %>
<% else %>
<%= link_to 'login', new_user_session_path %>
<%= link_to 'register', new_user_path %>
<% end %>
这只是一个人为的例子,但你可以看到它是如何工作的。它不是严格意义上的变量,它是一种缓存第一次调用的值并返回的方法。