繁体   English   中英

Json 响应到 rails 中的 selectBox

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM