{"COUNT(*)"=>0}:Hash 的未定义方法“bytesize”

undefined method `bytesize' for {"COUNT(*)"=>0}:Hash

未禁止客户端时显示错误: {"COUNT(*)"=>0}:Hash

的未定义方法“bytesize”

我使用 mysql2 库

post '/mario/login' do
  credentials = CGI.parse request.body.read

  if !credentials.has_key?('username') || !credentials.has_key?('password')
    status 603
    return "MISSING_FIELD"
  end

  results = bans.execute request.ip
  results.each do |row|

    if row['COUNT(*)'] > 0
      status 603
      return "BANNED"
    end

    puts "ok"



  end
end

您的代码试图在函数结束后 return 散列 results。 Return 正确响应 code/type 应该可以。

Ruby 中的最后一个 line/block 在任何函数中 returned。在您的情况下,最后一个块是 results.each,return 返回 results,这不是 sinatra 的有效响应类型。