首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义的方法“[]”表示零:典狱长的NilClass

未定义的方法“[]”表示零:典狱长的NilClass
EN

Stack Overflow用户
提问于 2014-08-05 11:20:13
回答 2查看 396关注 0票数 1

我有一个帮助模块如下所示。模块使用典狱长。

代码语言:javascript
复制
module V0
  module Api
    # @private
    module Helpers
      def warden
        env['warden']
      end

      # Used to require an authenticated user for a particular action.
      def protected!
        warden.authenticate!
      end

      def current_user
        warden.user
      end

      def parse_json_body
        request.body.rewind
        request_body = current_user ? current_user.keychain_replace(request.body.read) : request.body.read
        @parsed_body = JSON.parse(request_body, symbolize_names: true)
        params.update @parsed_body
      end
    end
  end
end

该模块解析一个请求。排在队伍里

代码语言:javascript
复制
request_body = current_user ? current_user.keychain_replace(request.body.read) : request.body.read

我试着检查是否设置了当前用户并相应地获取request_body。然而,我得到以下错误。

代码语言:javascript
复制
NoMethodError:
       undefined method `[]' for nil:NilClass
     # (eval):2:in `method_missing'
     # ./app/api/v0/helpers.rb:11:in `warden'
     # ./app/api/v0/helpers.rb:23:in `current_user'
     # ./app/api/v0/helpers.rb:37:in `parse_json_body'

如果没有设置当前用户,则应该设置

代码语言:javascript
复制
request_body = request.body.read

但我不明白

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-05 12:41:27

而不是

代码语言:javascript
复制
request_body = current_user ? current_user.key ..

试一试

代码语言:javascript
复制
request_body = !current_user.nil? ? current_user.key ..

这将得到一个正确/错误的反应来评估..。我放的!来保持你们论点的顺序。

这有点猜测,但我认为这是在评估一个零,而不是寻找虚假的属性。

票数 1
EN

Stack Overflow用户

发布于 2014-08-05 12:58:06

问题似乎在于您的warden方法。env变量是nil。检查您的模块是否正确加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25137542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档