Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何根据特定标签获取参数值?_Ruby_Arrays_Methods_Sinatra - Fatal编程技术网

Ruby 如何根据特定标签获取参数值?

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

我正在解析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 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