2

如何在 ActionView 中访问已在 ApplicationController 中定义的变量?

就我而言,我想让我的布局响应在 ApplicationController 中设置的变量。

如果它是一个视图,与控制器的操作相关联,我只需要在相应的操作中设置一个实例 var 就可以了。但是在布局中访问这些数据对我来说是新鲜事。

谢谢!

4

1 回答 1

2

您可以在 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 %>

这只是一个人为的例子,但你可以看到它是如何工作的。它不是严格意义上的变量,它是一种缓存第一次调用的值并返回的方法。

于 2010-10-21T22:35:51.790 回答