【问题标题】:Json response into selectBox in railsJson响应到rails中的selectBox
【发布时间】:2015-12-31 18:41:13
【问题描述】:

我有以下 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"
      } ]
  } ]

如您所见,它是一个嵌套哈希数组。我知道有几篇关于此的帖子,但无论是我的技能水平还是这个问题的独特性,我都希望能够操纵这些数据。什么方法可以帮助我将这些数据放入选择框,以便只显示年份。到目前为止,在我看来,这就是我所拥有的,并且只是将完整的对象放在选择框中。我只想看看那一年。

    <%=select_tag("Year", options_for_select(@caryears))%>

其中@caryears 是完整的哈希数组或(对象)。顺便说一句,我不能使用基于响应的符号,这是我获取数据的方式。这个想法是在人们选择年份后转到年份链接

【问题讨论】:

  • 有很多关于如何将 json 解析为 html 的教程。这不是代码编写服务
  • 谢谢你,如果你不想回答我理解的问题。只是不要回答它。为什么还要费心以粗鲁的方式回复。
  • 这不是粗鲁......这是关于本网站如何运作的声明。此问题不符合帮助中心中每个文档的正确问题指南

标签: jquery ruby-on-rails arrays json hash


【解决方案1】:

我认为您正在寻找的是 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

【讨论】:

  • 谢谢@trh 这很有帮助,我新有一种方法,但在看到你的帖子之前找不到合适的方法。谢谢
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多