我想从 post 参数中迭代一个键值对数组:
Parameters:
  {"utf8"=>"✓",
  "authenticity_token"=>"c6VYssp33I075nfv1ViPty38+aZSkWM/jh6oll2pYS8=", 
  "permission"=>
    {"employment_id"=>"7", 
     "organisation_level"=>"all_below", 
     "permissions"=>"view_permissions", 
     "users"=>"", 
     "organisation"=>"", 
     "functions"=>"", 
     "statistics"=>""}, 
  "commit"=>"Opslaan"} 
我从这些参数中取出权限映射并尝试处理它。基本上我想检查键是否不是employment_id 并且值是否存在。
params.each do |k,v|
  if(!(k.eql?"employment_id") && v.present?)
   p v
  end
end
在为每个运行 if 语句时,我遇到了一些奇怪的行为,我想知道是否有人可以对这种情况有所了解
我最终得到了这个 if 语句,它像我期望的那样工作和评估。它仅在值不是""或nil并且键不是时打印值employment_id
if(!(k.eql?"employment_id") && v.present?)
  p v
end 
但是,以下 2 个 if 语句无法按我的预期工作。两者都打印所有值。他们评估,true而我认为他们不应该。
if(!k.eql?"employment_id" && v.present?)
  p v 
end 
和
if !k.eql?"employment_id" && v.present?
  p v 
end