提交哈希数组

时间:2018-10-14 18:17:26

标签: ruby-on-rails arrays

假设以下由字符串数组组成的参数字符串,将其提交到Rails的正确方法是什么

&auth=6db2f8aa0af80748&guest={surname:"Tizio",name:"Caio",type:"A"}&guest={surname:"Cane",name:"Pippo",type:"B"}&guest={surname:"Topo",name:"Giggio",type:"C"}'

1 个答案:

答案 0 :(得分:1)

您的字符串看起来像是关于在GET请求的查询字符串中传递参数。

要传递哈希数组,可以使用以下语法:

&auth=6db2f8aa0af80748&guest[][surname]=Tizio&guest[][name]=Caio&guest[][type]=A&guest[][surname]=Cane&guest[][name]=Pippo&guest[][type]=B&guest[][surname]=Topo&guest[][name]=Giggio&guest[][type]=C

在服务器上,此字符串解释为:

>> Parameters: {"auth"=>"6db2f8aa0af80748", "guest"=>[{"surname"=>"Tizio", "name"=>"Caio", "type"=>"A"}, {"surname"=>"Cane", "name"=>"Pippo", "type"=>"B"}, {"surname"=>"Topo", "name"=>"Giggio", "type"=>"C"}]}

在解析查询字符串时,Rails将guest解释为数组,因为[]之后是guestguest[][surname]使其使用键surname创建哈希,并将其添加到数组guest中。下一个参数guest[][name]也会被解释为哈希的一部分,但是它不会创建新的哈希,而是将这个键值对添加到guest的最后一个哈希中。其他参数将添加到该哈希中,直到满足哈希中已存在的键为止。在这种情况下,将创建并添加新的哈希。