ruby-on-rails - 如何根据哈希中的另一个值设置变量
问题描述
我正在尝试遍历键/值对的哈希,并根据其中一个键是某个值来设置一个变量。
@custom_fields = [{
"field_id" => "6",
"field_identifier" => "NROM_Password",
"field_type" => "input_field",
"field_value" => "NROM Password 1"
}, {
"field_id" => "5",
"field_identifier" => "NROM_Username",
"field_type" => "input_field",
"field_value" => "NROM Username 1"
}]
我想设置一个调用@username
键值field_value
的变量,只有当field_identifier
键等于“NROM_Username”并且field_value
不为空时。
这是我到目前为止的代码片段:
@custom_fields.each do |custom_field|
custom_field.each do |field_key, field_value|
if (field_key == "field_identifier" && field_value == "NROM_Username")
@password = (field_key == "NROM_Password" && value?) ? value : ""
end
end
end
解决方案
hash = @custom_fields.inject({}) do |memo, cf|
memo.merge(cf["field_identifier"] => cf["field_value"].presence)
end.compact
# this is kind of silly - nil is nil
@username = hash["NROM_Username"] if hash["NROM_Username"]
推荐阅读
- flutter - Flutter 升级错误:您对以下文件的本地更改将被覆盖
- python - 用 Python 中的链接抓取手机模型
- node.js - 如何使用 Bull 和 Node.js 通过后台作业处理函数?
- azure-devops - Azure Pipelines 构建可视化步骤而不是我的 .yml 文件
- android - 片段工具栏不显示菜单按钮
- javascript - 在 HTML 表单提交上读取 JSON 文件
- php - Creating user profile tables that are publicly accessible in Laravel 5.8
- c# - 在 C# 中使用 switch:如何完成我要编写的语句?
- reactjs - How to use react router
- c++ - Link based stack in C++