Ruby 我写得很糟糕

Ruby 我写得很糟糕,ruby,sinatra,Ruby,Sinatra,我不明白为什么这些条件不起作用, 如果用户名和密码为空,我希望执行该部分 post '/login' do credentials = CGI.parse request.body.read if credentials['username'].nil? || credentials['password'].nil? status 603 return ; end end 您使用了错误的逻辑运算符,或(|)而不是AND(&&) 您的问题表明,如果用户名和密码为零

我不明白为什么这些条件不起作用, 如果用户名和密码为空,我希望执行该部分

post '/login' do

  credentials = CGI.parse request.body.read

  if credentials['username'].nil? || credentials['password'].nil?
    status 603
    return ;
  end
end

您使用了错误的逻辑运算符,或(
|
)而不是AND(
&&


您的问题表明,如果用户名和密码为零,您希望执行代码。如果用户名或密码为零,则将执行代码

但更合理的是,如果缺少任何一部分,您都希望代码执行。假设这是您想要的,我会将条件写为:

unless credentials['username'] && credentials['password']
如果您确实希望仅在缺少这两部分时执行代码,则可以执行以下操作:

unless credentials['username'] || credentials['password']

不过,这已经不是什么糟糕的事情了:)哈哈,很公平,这是我能想到的最接近的术语@SergioTulentsev,
unless credentials['username'] || credentials['password']