我有各种测试条件,并根据特定输入我想创建什么是我可以使用的api正文请求。我想要构建请求的一部分,并根据该输入返回特定数量的附加块。
以下方法目前有两个“块”硬编码:
def info(*value, *type)
#request build logic here
return {
'individual' => {
'title' => 'Mr',
'firstName' => 'Joe',
'middleName' => '',
'lastName' => 'Bloggs',
'birthDate' => '2016-01-01',
'incomeAmount' => 50,
'emailAddress' => 'clear@gmail.com',
},
'blocks' => [
{
'value' => 400,
'type' => 'car'
},
{
'value' => 400,
'type' => 'jug'
}
]
}
end
所以基于输入我想创建我的'块',例如value = 100,type = house,所以块就是上面格式的那个值。
有了这个想法,如果我通过它10个值/ 10个类型然后我返回所有10.我试图调用另一个构建我的响应的方法,但我很难根据输入重复它< / p>
def block(value,type)
"{
'value' => #{value.to_i},
'type' => #{type}
},"
end
答案 0 :(得分:0)
您正在返回哈希值,以插入更大的哈希值,因此没有理由尝试生成包含序列化哈希的字符串。只需返回一个哈希值。
def block(value,type)
{
'value' => value.to_i,
'type' => type
}
end
如果要将值和类型数组转换为一系列哈希值,则应在数组上使用map
。
答案 1 :(得分:0)
假设您传递了几个值和类型数组,可以使用zip
方法对齐它们:
def info(values, types)
blocks = values.zip(types).map do |value, type|
{
'value' => value.to_i,
'type' => type
}
end
{
'individual' => {
'title' => 'Mr',
'firstName' => 'Joe',
'middleName' => '',
'lastName' => 'Bloggs',
'birthDate' => '2016-01-01',
'incomeAmount' => 50,
'emailAddress' => 'clear@gmail.com'
},
'blocks' => blocks
}
end