Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我会得到;未初始化的常量ApplicationController::SessionHelper“;错误?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 为什么我会得到;未初始化的常量ApplicationController::SessionHelper“;错误?

Ruby on rails 为什么我会得到;未初始化的常量ApplicationController::SessionHelper“;错误?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我没有会话模型,只有用户和任务模型 app/helpers/sessions\u helper.rb module SessionsHelper def sign_in(user) session[:user_id] = user.id self.current_user = user end def current_user=(user) @current_user = user end def current_user if sess

我没有会话模型,只有用户和任务模型

app/helpers/sessions\u helper.rb

module SessionsHelper

  def sign_in(user)
    session[:user_id] = user.id
    self.current_user = user
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    if session[:user_id]
    @current_user ||= User.find(session[:user_id])
    end
  end

  def signed_in?
    !current_user.nil?
  end

  def sign_out
    session[:user_id] = nil
    self.current_user = nil
  end

  def current_user?(user)
    user == current_user
  end

  def deny_access
    redirect_to signin_path, notice: "Please sign in to access this page."
  end

end
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionHelper
end
class User < ActiveRecord::Base
 has_many :tasks

  attr_accessor :password
  EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :first_name, presence: true,
            length: {maximum: 20}
  validates :last_name,  presence: true,
            length: {maximum: 40}
  validates :email, presence: true,
            format: {with: EMAIL_REGEX},
            uniqueness:  {case_sensitive: false}
  validates :password, presence: true,
            confirmation: true,
            length: {within: 6..40}

  before_save :encrypt_password

  def has_password?(submitted_password)
    encrypted_password == encrypt(submitted_password)
  end

  def self.authenticate(email, submitted_password)
    user = find_by_email(email)

    return nil if user.nil?
    return user if user.has_password?(submitted_password)
  end

  private
    def encrypt_password
      self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}") if self.new_r

      self.encrypted_password = encrypt(password)
    end

    def encrypt(pass)
      Digest::SHA2.hexdigest("#{self.salt}--#{pass}")
    end

  end
我将SessionHelper包含在应用程序控制器中

app/controllers/application\u controller.rb

module SessionsHelper

  def sign_in(user)
    session[:user_id] = user.id
    self.current_user = user
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    if session[:user_id]
    @current_user ||= User.find(session[:user_id])
    end
  end

  def signed_in?
    !current_user.nil?
  end

  def sign_out
    session[:user_id] = nil
    self.current_user = nil
  end

  def current_user?(user)
    user == current_user
  end

  def deny_access
    redirect_to signin_path, notice: "Please sign in to access this page."
  end

end
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionHelper
end
class User < ActiveRecord::Base
 has_many :tasks

  attr_accessor :password
  EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :first_name, presence: true,
            length: {maximum: 20}
  validates :last_name,  presence: true,
            length: {maximum: 40}
  validates :email, presence: true,
            format: {with: EMAIL_REGEX},
            uniqueness:  {case_sensitive: false}
  validates :password, presence: true,
            confirmation: true,
            length: {within: 6..40}

  before_save :encrypt_password

  def has_password?(submitted_password)
    encrypted_password == encrypt(submitted_password)
  end

  def self.authenticate(email, submitted_password)
    user = find_by_email(email)

    return nil if user.nil?
    return user if user.has_password?(submitted_password)
  end

  private
    def encrypt_password
      self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}") if self.new_r

      self.encrypted_password = encrypt(password)
    end

    def encrypt(pass)
      Digest::SHA2.hexdigest("#{self.salt}--#{pass}")
    end

  end
class ApplicationController
app/models/user.rb

module SessionsHelper

  def sign_in(user)
    session[:user_id] = user.id
    self.current_user = user
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    if session[:user_id]
    @current_user ||= User.find(session[:user_id])
    end
  end

  def signed_in?
    !current_user.nil?
  end

  def sign_out
    session[:user_id] = nil
    self.current_user = nil
  end

  def current_user?(user)
    user == current_user
  end

  def deny_access
    redirect_to signin_path, notice: "Please sign in to access this page."
  end

end
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionHelper
end
class User < ActiveRecord::Base
 has_many :tasks

  attr_accessor :password
  EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :first_name, presence: true,
            length: {maximum: 20}
  validates :last_name,  presence: true,
            length: {maximum: 40}
  validates :email, presence: true,
            format: {with: EMAIL_REGEX},
            uniqueness:  {case_sensitive: false}
  validates :password, presence: true,
            confirmation: true,
            length: {within: 6..40}

  before_save :encrypt_password

  def has_password?(submitted_password)
    encrypted_password == encrypt(submitted_password)
  end

  def self.authenticate(email, submitted_password)
    user = find_by_email(email)

    return nil if user.nil?
    return user if user.has_password?(submitted_password)
  end

  private
    def encrypt_password
      self.salt = Digest::SHA2.hexdigest("#{Time.now.utc}--#{password}") if self.new_r

      self.encrypted_password = encrypt(password)
    end

    def encrypt(pass)
      Digest::SHA2.hexdigest("#{self.salt}--#{pass}")
    end

  end
class用户

问题可能是什么?

有输入错误,应该是
SessionHelper
而不是
SessionHelper

 include SessionsHelper

希望这有帮助

有输入错误,应该是
SessionHelper
而不是
SessionHelper

 include SessionsHelper

希望这有帮助

我完全疯了。thanks@AlexanderShmatko如果答案有帮助,请将其标记为正确。很高兴它有帮助,请接受答案!:)我完全疯了。thanks@AlexanderShmatko如果答案有帮助,请将其标记为正确。很高兴它有帮助,请接受答案!:)