1

我正在尝试将以下 ruby​​ 哈希传递到活动资源 (3.0.9) find(:from) 调用中。

my_hash = {
            :p => {:s => 100, :e => 2},
            :k => "blah",
            :f => [
                   {
                     :fl => :bt,
                     :tp => :trm,
                     :vl => "A::B"
                   },
                   {
                     :fl => :jcni,
                     :tp => :trm,
                     :vl => [133, 134]
                   },
                   {
                     :mnfl => :bmns,
                     :mxfl => :bmxs,
                     :tp => :rfstv,
                     :vl => 1e5
                   },
                   {
                     :fl => :bpo,
                     :tp => :rftv,
                     :op => :eta,
                     :vl => 1.months.ago.strftime("%Y-%m-%d")
                   }
                  ]
          }    

Resource.find_by_x_and_y(:all, :from => :blah, params: my_hash)

在服务器端操作中,当我打印参数哈希时,一切都搞砸了。(数组中的最后 3 个哈希映射到 :f )

{
  "f" => [
          {
            "fl" => "bt",
            "tp" => "trm",
            "vl" => "A::B"
          },
          {
            "fl" => "jcni",
            "tp" => "trm",
            "vl" => [
                     "133",
                     "134"
                    ],
            "mnfl" => "bmns",
            "mxfl" => "bmxs"
          },
          {
            "tp" => "rfstv",
            "vl" => "100000.0",
            "fl" => "bpo",
            "op" => "eta"
          },
          {
            "tp" => "rftv",
            "vl" => "2013-01-25"
          }
         ],
  "k" => "blah",
  "p" => {
    "e" => "2",
    "s" => "100"
  },
  "action" => "blah",
  "controller" => "x/Y",
  "format" => "json"
}

my_hash.to_query 给了我

f[][fl]=bt&f[][tp]=trm&f[][vl]=A%3A%3AB&f[][fl]=jcni&f[][tp]=trm&f[][vl][]=133&f[][vl][]=134&f[][mnfl]=bmns&f[][mxfl]=bmxs&f[][tp]=rfstv&f[][vl]=100000.0&f[][fl]=bpo&f[][op]=eta&f[][tp]=rftv&f[][vl]=2013-01-25&k=blah&p[e]=2&p[s]=100

它没有索引,因此混淆了。

这种类型的序列化是否有使用“[]”的名称?这是否保证忠实地序列化/反序列化任意嵌套的哈希/数组/基元?如何使活动资源表现良好?

4

0 回答 0