Railsにパラメータが存在するかどうかをテストする方法 質問する

Railsにパラメータが存在するかどうかをテストする方法 質問する

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、。
  • 空の文字列しかありません。

同様に。正確な状況の詳細がなければ、何とも言えません。

おすすめ記事