ruby-on-rails - Ruby 不对 if 块中的 nil 类执行操作
问题描述
如何实现某事,例如 ifparams[:filters][:company_name]
存在(不是 nil),然后执行以下操作,但如果它是 nil - 跳过并执行 if 下方/之外的其余代码?
if params[:filters][:company_name]
contains = Process
.where(
'company_name LIKE ?', "#{params[:filters][:company_name].downcase}%"
)
end
解决方案
我假设您的问题是代码“爆炸”如果params[:filters]
是nil
. (你得到一个错误:“未定义的方法:[]
” nil:NilClass
。)
有多种方法可以处理这个问题,但最简洁的方法可能是使用Hash#dig
:
if params.dig(:filters, :company_name)
# ...
end
如果params[:filters] == nil
. 从上面的链接文档(重点是我的):
通过在每一步调用 dig 提取键对象序列指定的嵌套值,如果任何中间步骤为 nil 则返回 nil。
推荐阅读
- javascript - 在 npm run build 的预渲染页面上获取 TypeError
- regex - 匹配正则表达式 Regex sketchengine(不匹配子字符串)
- facebook-graph-api - 不支持的发布请求。ID 为 xxx 的对象不存在,由于缺少权限而无法加载,或不支持此操作 Instagram
- gpu - 使用 cuda 并行计算周转时间
- angular - 如何在 mat-select 中不显示选定的值
- ios - 在集合视图中访问图表数据(图表 cocoapod)
- ibm-cloud - 如何在 Watson Assistant webhook 中调用公共 api?
- highcharts - 如何使用鼠标滚轮滚动我的 gnatt highcharts
- android - 有没有办法使用 Android 的辅助功能服务在整个屏幕上应用颜色过滤器?
- ios - 如何在 SwiftUI 中的视图中正确过滤和迭代