我在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) 我有兴趣获取params哈希的嵌套'name'参数.打电话给像
params[:subject][:name]
Run Code Online (Sandbox Code Playgroud)
当params [:subject]为空时抛出错误.为了避免这个错误,我通常写这样的东西:
if params[:subject] && params[:subject][:name]
Run Code Online (Sandbox Code Playgroud)
有没有更清洁的方法来实现这一点?
我正在寻找一种避免nil在深层嵌套哈希中检查每个级别的好方法.例如:
name = params[:company][:owner][:name] if params[:company] && params[:company][:owner] && params[:company][:owner][:name]
Run Code Online (Sandbox Code Playgroud)
这需要三次检查,并且会产生非常难看的代码.有办法解决这个问题吗?