Ruby on Rails で IF ステートメントを使用して、リクエスト パラメータが設定されているかどうかをテストしています。両方のパラメータが設定されているかどうかに関係なく、次の if ブロックの最初の部分がトリガーされます。params[:one] と params[:two] の両方が設定されている場合にのみ、この部分がトリガーされるようにするにはどうすればよいですか?
if (defined? params[:one]) && (defined? params[:two])
... do something ...
elsif (defined? params[:one])
... do something ...
end
ベストアンサー1
あなたが望むhas_key?
:
if(params.has_key?(:one) && params.has_key?(:two))
単に確認するだけでは、if(params[:one])
「nil だが存在する」および「false だが存在する」という値に惑わされ、存在について尋ねていることになります。区別する必要があるかもしれません:
- 全然ありません。
- しかし
nil
、。 - しかし
false
、。 - 空の文字列しかありません。
同様に。正確な状況の詳細がなければ、何とも言えません。