我被困在一个点badly..when我用导轨做的form_for与远程提交请求:真用含有如下散列阵列的隐藏字段:卡住发送散列与远程真
<%= f.hidden_field :staff_stat_data, :value =>[{a: "a"} , {b: "b"}] %>
那么我得到散列作为一个字符串参数,如:
"{:a=>\"a\"} {:b=>\"b\"}"
与此不好。
我被困在一个点badly..when我用导轨做的form_for与远程提交请求:真用含有如下散列阵列的隐藏字段:卡住发送散列与远程真
<%= f.hidden_field :staff_stat_data, :value =>[{a: "a"} , {b: "b"}] %>
那么我得到散列作为一个字符串参数,如:
"{:a=>\"a\"} {:b=>\"b\"}"
与此不好。
你没有得到一个哈希,你得到一个字符串类型的,看起来像一个哈希值。
记住,每个参数只是一个字符串,这就是数据是如何客户端和服务器之间传递。 Rails有时可以接收数组,但仅当参数名称描述数组时(例如,"user_favourites[]"
)。
如果要传递一个表示一个数组或哈希单个串,就可以使用JSON来编码/解析数据。
在视图,第一阵列更改为其JSON表示这样的:
<%= f.hidden_field :staff_stat_data, :value => [{a: "a"} , {b: "b"}].to_json %>
然后在您的控制器,它改变到哈希通过解析JSON这样的:
staff_stat_data = JSON.parse(params[:staff_stat_data])
这将返回一个数组,其中每个元素都是一个散列,就像你想要的那样。
你可以在你的Rails控制台轻松地尝试了这一点。
json = [{a: "a"} , {b: "b"}].to_json # => "[{\"a\":\"a\"},{\"b\":\"b\"}]"
JSON.parse(json) # => [{a: "a"} , {b: "b"}]
这是什么问题? –
我有一些哈希数组中的数据在html表单中,我需要将这个数据发送回控制器与远程:true..While提交模式形式的数据在params是作为字符串而不是散列数组。 [{a:“a”},{b:“b”}] =>换成“{:a => \”a \“} {:b => \”b \“}” – Abhishek