Ruby on rails ruby:在进行同样处理nil的不区分大小写的比较时,如何避免if-then-else
我经常发现自己不得不做一个额外的nil检查,以避免抛出一个“undefined for nil”错误,我很确定这是不必要的 在一个常见的例子中,当查看可选的url参数时,例如可能存在或不存在的url参数,我希望它们不区分大小写(如果存在) 例如,我的一个controller方法不需要&showdate=true,我喜欢通过不关心true vs true vs true来让它变得用户友好 我只能说Ruby on rails ruby:在进行同样处理nil的不区分大小写的比较时,如何避免if-then-else,ruby-on-rails,ruby,conditional,null,Ruby On Rails,Ruby,Conditional,Null,我经常发现自己不得不做一个额外的nil检查,以避免抛出一个“undefined for nil”错误,我很确定这是不必要的 在一个常见的例子中,当查看可选的url参数时,例如可能存在或不存在的url参数,我希望它们不区分大小写(如果存在) 例如,我的一个controller方法不需要&showdate=true,我喜欢通过不关心true vs true vs true来让它变得用户友好 我只能说 @showdate = params[:showdate] == "true" 但这是一个较低的假
@showdate = params[:showdate] == "true"
但这是一个较低的假设
如果我这样做:
@showdate = params[:showdate].lower == "true"
如果url中缺少showdate,它当然会抛出一个不需要的错误,因为nil.lower会抛出一个错误
因此,我在代码中经常做类似的事情:
if params[:showdate]
@showdate = params[:showdate].lower == "true"
else
@showdate = false (or maybe nil)
我知道有更好的方法,只是不知道是什么。任何帮助都将不胜感激。Rails
@showdate = params[:showdate].try(:downcase) == "true"
或
轨道
或
你可以这样做:
@showdata = (params[:showdate] || '').downcase == 'true'
你可以这样做:
@showdata = (params[:showdate] || '').downcase == 'true'
杰出的:。忘记即将扫描不要忘记to_s,否则会抛出我提到的错误。这是一个简单的解决方案,谢谢!我没想到会用这种方式来演奏弦乐。好极了:。忘记即将扫描不要忘记to_s,否则会抛出我提到的错误。这是一个简单的解决方案,谢谢!我没想到会用那样的方式来表达。。。。或者您可以将两个答案混合在一起@showdate=!!参数[:showdate]。请尝试:停机。。。或者您可以将两个答案混合在一起@showdate=!!参数[:showdate]。请尝试:downcase
@showdata = (params[:showdate] || '').downcase == 'true'