我是铁轨初学者学习rails 4而我正在努力学习。我正在创建一个简单的博客,我想要一些简单的用户身份验证。我正在尝试在这里学习,所以我不想实现Devise等。我有一个标题部分来处理我的网站标题,我试图放一个注销链接,只显示用户是登录。我有一个简单的会话控制器,它有一个新的注册表单操作,一个创建操作,在匹配电子邮件和密码后设置当前用户并设置session [:user_id] = @ current_user.id,以及一个destroy操作这会使会议失败。在我的应用程序控制器中,我有一个像这样的方法
def logged_in?
!session[:user_id].nil?
end
在我的_header.html.erb部分中,我有
<% if logged_in? %>
(My link)
<% end %>
当我加载页面时,它告诉我它找不到“logged_in?”方法。谁知道为什么?谢谢。
答案 0 :(得分:3)
默认情况下,控制器上的方法不会暴露给视图(您的部分属于视图)。
2个解决方案:
logged_in?
方法创建为辅助方法,例如在AuthenticationHelper
中。但是,这样做无法从控制器访问它。class ApplicationController < ActionController::Base
helper_method :logged_in?
def logged_in?
[...]
end
end
答案 1 :(得分:0)
你不能只使用:
if @current_user