Ruby 如何根据特定标签获取参数值?
我正在解析JSON并将其作为Ruby 如何根据特定标签获取参数值?,ruby,arrays,methods,sinatra,Ruby,Arrays,Methods,Sinatra,我正在解析JSON并将其作为fields\u array传递,以呈现erb模板。这是一个Sinatra应用程序 我有: private def fields_params # example of parsed JSON, Company Name sometimes is Field6 but sometimes Field3 [["Company Name", "Field6"], ["Email", "Field5"]] end def company_name # I
fields\u array
传递,以呈现erb
模板。这是一个Sinatra应用程序
我有:
private
def fields_params
# example of parsed JSON, Company Name sometimes is Field6 but sometimes Field3
[["Company Name", "Field6"], ["Email", "Field5"]]
end
def company_name
# I want to return company name from params[company_field_id]
# Maybe something like:
id = fields_params.select{|field| field[0] == "Company Name" }.flatten[1]
params[id]
end
def fields_array
fields_params.collect do |label, param_id|
{ label: label, value: params[param_id] } if params[param_id]
end
end
如何从params
获取company\u name
?使用
[[“公司名称”、“字段6”]、[“电子邮件”、“字段5”]]
是一种常见的数据模式,一旦您识别它,您就会知道它可以很容易地强制为哈希:
hash = Hash[[["Company Name", "Field6"], ["Email", "Field5"]]]
下面是它现在的样子:
{
"Company Name" => "Field6",
"Email" => "Field5"
}
因此,我将修改您的代码以返回散列,从而使检索值更容易:
def fields_params
# example of parsed JSON, Company Name sometimes is Field6 but sometimes Field3
Hash[ [["Company Name", "Field6"], ["Email", "Field5"]] ]
end
定义字段参数
#解析JSON的示例,公司名称有时是Field6,但有时是Field3
散列[[“公司名称”,“字段6”],[“电子邮件”,“字段5”]]
结束
很多时候,我看到的JSON在解析后已经会导致某种类型的散列。在没有看到您的输入JSON的情况下,我不能肯定,但它可能已经是那种格式了,您正在做的事情是将它转换成一个数组数组,这就是通过map
或collect
运行或应用to_a
时散列的样子
hash['Company Name']
=> "Field6"
def fields_params
# example of parsed JSON, Company Name sometimes is Field6 but sometimes Field3
Hash[ [["Company Name", "Field6"], ["Email", "Field5"]] ]
end