我在 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
你想要has_key?:
has_key?
if(params.has_key?(:one) && params.has_key?(:two))
只是检查if(params[:one])会被“there but nil”和“there but false”值所愚弄,而您正在询问是否存在。您可能需要区分:
if(params[:one])
nil
false
也是。很难说没有您的确切情况的更多细节。