Dar*_*ren 174 ruby ruby-on-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
Run Code Online (Sandbox Code Playgroud)
mu *_*ort 332
你想要has_key?
:
if(params.has_key?(:one) && params.has_key?(:two))
Run Code Online (Sandbox Code Playgroud)
只是检查if(params[:one])
会被一个"那里但没有"和"那里但是错误"的价值所迷惑,而你却在询问是否存在.您可能需要区分:
nil
.false
.同样.如果没有更详细的确切情况,很难说.
net*_*ate 82
我是粉丝
params[:one].present?
只是因为它保留了params[sym]
表单,因此更容易阅读.
Orl*_*ndo 21
用空白?http://api.rubyonrails.org/classes/Object.html#method-i-blank-3F
unless params[:one].blank? && params[:two].blank?
Run Code Online (Sandbox Code Playgroud)
如果它为空或零,则返回true
如果你正在测试布尔值,那将无法工作..因为
>> false.blank?
=> true
Run Code Online (Sandbox Code Playgroud)
在这种情况下你可以使用
unless params[:one].to_s.blank? && params[:two].to_s.blank?
Run Code Online (Sandbox Code Playgroud)
Zac*_* Xu 13
您可以更简洁地编写它,如下所示:
required = [:one, :two, :three]
if required.all? {|k| params.has_key? k}
# here you know params has all the keys defined in required array
else
...
end
Run Code Online (Sandbox Code Playgroud)
馅饼简单:
if !params[:one].nil? and !params[:two].nil?
#do something...
elsif !params[:one].nil?
#do something else...
elsif !params[:two].nil?
#do something extraordinary...
end
Run Code Online (Sandbox Code Playgroud)
if params[:one] && params[:two]
... do something ...
elsif params[:one]
... do something ...
end
Run Code Online (Sandbox Code Playgroud)
为params提供默认值的一种非常简单的方法: params[:foo] ||= 'default value'
我刚刚在RubyInRails类中阅读了这篇文章 http://api.rubyonrails.org/classes/Object.html#method-i-blank-3F
你可以使用blank?
相当于的方法params[:one].nil? || params[:one].empty?
(例如)
if params[:one].blank?
# do something if not exist
else
# do something if exist
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
170845 次 |
最近记录: |