如何实现某项功能,例如是否存在params[:filters][:company_name]
(不是nil),然后执行以下操作,但是如果它为nil,则跳过并执行下面/之外的其余代码?
if params[:filters][:company_name]
contains = InquiryProcess
.where(
'inquiry_process_summary_pdf LIKE ?', "#{params[:filters][:company_name].downcase}%"
)
end
尝试更改
if params[:filters][:company_name]
to
if params[:filters] && params[:filters][:company_name]
我假设您的问题是,如果params[:filters]
为nil
,则代码“爆炸”。 (您收到一个错误:“ :[]
的未定义方法nil:NilClass
”。)
有多种处理方法,但是最简洁的方法可能是使用Hash#dig
:
Hash#dig
如果if params.dig(:filters, :company_name)
# ...
end
,这不会失败。从上面的链接文档(重点是我的):
通过在每个步骤调用dig提取由键对象序列指定的嵌套值,如果中间步骤为nil,则返回nil]。