And*_*rew 9 ruby hash null if-statement ruby-on-rails
我正在使用的rails应用程序中有以下非常难看的ruby代码:
if params.present?
if params[:search].present?
if params[:search][:tags_name_in].present?
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
所有我想问的是是否已经定义了params [:search] [:tags_name_in],但因为params,params [:search]和params [:search] [:tags_name_in]可能都是零,如果我使用...
if params[:search][:tags_name_in].present?
Run Code Online (Sandbox Code Playgroud)
...如果没有参数或没有搜索参数,我会收到错误.
肯定有一个更好的方法来做到这一点......建议?
Wil*_*Ayd 11
如果你只是想看看它的定义为什么不保持简单并使用定义的?功能?
if defined?(params[:search][:tags_name_in])
Run Code Online (Sandbox Code Playgroud)
Params将始终定义,因此您可以删除它.
减少您可以执行的代码量
if params[:search] && params[:search][:tags_name_in]
#code
end
Run Code Online (Sandbox Code Playgroud)
如果params[:search]没有定义,条件将短路并返回nil.