【发布时间】:2014-08-20 10:01:18
【问题描述】:
如果用户尚未登录并访问localhost:3000/projects,则会出现此错误undefined method `projects' for nil:NilClass
我想更改它,以便将其重定向到登录页面。但是使用类似
if signed_in?
@projects=current_user.projects
else
link_to 'Please sign in first' ,signin_path
end
会引发错误
这就是 SessionsHelper 的样子
module SessionsHelper
def sign_in(user)
remember_token = User.new_remember_token
cookies.permanent[:remember_token] = remember_token
user.update_attribute(:remember_token, User.digest(remember_token))
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
remember_token = User.digest(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
def sign_out
current_user.update_attribute(:remember_token,User.digest(User.new_remember_token))
cookies.delete(:remember_token)
self.current_user = nil
end
end
这是我的应用程序控制器
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
include SessionsHelper
end
class ProjectsController < ApplicationController
def index
@projects=Project.all
end
end
【问题讨论】:
-
如果已登录,您在哪里使用? ?
-
在我的项目控制器索引操作中
标签: ruby-on-rails ruby-on-rails-4 grails-controller