如何在ActionView中访问已在ApplicationController中定义的变量?
在我的情况下,我想让我的布局响应在ApplicationController中设置的变量。
如果它是一个视图,与控制器的动作相关联,我只需要在相应的动作中设置一个实例var,一切都会好的。但是在布局中访问这些数据对我来说是新的。
谢谢!
答案 0 :(得分:2)
您可以在ApplicationController中创建一个方法,并在布局中调用该方法。这就是restful_authentication(和许多其他auth插件)创建和管理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 %>
这只是一个人为的例子,但你可以看到它是如何运作的。它不是一个严格的变量,它是一个缓存第一次调用值的方法,并返回它。