Rails:变量访问:从ApplicationController到ActionView

时间:2010-10-21 22:10:50

标签: ruby-on-rails variables actionview

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

在我的情况下,我想让我的布局响应在ApplicationController中设置的变量。

如果它是一个视图,与控制器的动作相关联,我只需要在相应的动作中设置一个实例var,一切都会好的。但是在布局中访问这些数据对我来说是新的。

谢谢!

1 个答案:

答案 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 %>

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