[英]Json response into selectBox in rails
我有以下 Json 响应:
[ {
"Year": 2016,
"Links": [ {
"Href": "/v1/Information/YMME/Years/2016/Makes",
"Rel": "VehicleMakes"
} ]
},
{
"Year": 2015,
"Links": [ {
"Href": "/v1/Information/YMME/Years/2015/Makes",
"Rel": "VehicleMakes"
} ]
},
{
"Year": 2014,
"Links": [ {
"Href": "/v1/Information/YMME/Years/2014/Makes",
"Rel": "VehicleMakes"
} ]
},
{
"Year": 2013,
"Links": [ {
"Href": "/v1/Information/YMME/Years/2013/Makes",
"Rel": "VehicleMakes"
} ]
},
{
"Year": 2012,
"Links": [ {
"Href": "/v1/Information/YMME/Years/2012/Makes",
"Rel": "VehicleMakes"
} ]
} ]
如您所见,是一个嵌套哈希数组。 我知道有几篇关于这个的帖子,但无论是我的技能水平还是这个问题的独特性,我都希望能够处理这些数据。 什么方法可以帮助我将这些数据放入Selectbox中,以便只显示年份。 到目前为止,我认为这就是我所拥有的,并且只是将完整的对象放在选择框中。 我只想看年。
<%=select_tag("Year", options_for_select(@caryears))%>
其中@caryears
是完整的哈希数组或(对象)。 顺便说一句,我不能使用基于响应的符号,这是我获取数据的方式。 这个想法是在人选择年份后转到年份链接
我认为您正在寻找的是 ruby 方法collect
。 Collect 为您执行内部迭代并返回对象数组。 你可以传递一个块来收集,允许你准确定义你想要返回的内容。 在你的情况下,它看起来像这样:
json_object.collect{|o| [o["Year"],o["Links"][0]["Href"]]}
请注意链接后的[0]
。 在您的示例 json 响应中,只有一个定义了链接的数组。 如果这在未来发生变化,或者如果真的不止一个,这个 0 将始终返回列表中的第一个链接。 此外,如果没有链接,它将失败。
您可以在此处阅读有关收集的更多信息: http : //ruby-doc.org/core-2.2.0/Array.html
第二部分是options_for_select
。 这是一个嵌套数组,简单明了,每个都有 2 个参数,第一个是向用户显示的内容,第二个是值,在本例中是这个 url。 对于复杂的显示,您也应该阅读该内容。
http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_for_select
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.