【问题标题】:Behavior from module SessionsHelper is not included in class来自模块 SessionsHelper 的行为不包含在类中
【发布时间】:2016-05-21 03:43:50
【问题描述】:

我尝试将会话添加到我的 Rails 应用程序中,并且我有 SessionManager 类,它负责处理与会话相关的任务

class SessionManager
  include SessionsHelper

  def log_in(user)
    session[:user_id] = user.id
  end

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

  def logged_in?
    return false if current_user.nil? 
    true
  end
end

如您所见,我包含 SessionsHelper 以便使用 session 方法将一些数据放入会话中,但是当我尝试使用此代码时,我会返回:

NameError: undefined local variable or method `session' for <SessionManager:0xa790cfc>

我做错了什么?

提前致谢。

【问题讨论】:

    标签: ruby-on-rails session ruby-on-rails-4


    【解决方案1】:

    我不确定你的 SessionsHelper 模块是什么样的,但你可能想看看使用 self.included。这有时被称为“mixin”。

    我相信像这样构建你的模块应该会对你有所帮助:

    module SessionsHelper
      def self.included(base)
        base.class_eval do
    
          def session
            # ...
          end
    
        end
      end
    end
    

    更多信息:http://ruby-doc.org/core-2.2.0/Module.html#method-i-included

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2017-12-19
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多