Ruby哈希返回奇怪的值

时间:2016-11-25 07:26:17

标签: ruby-on-rails ruby ruby-on-rails-3

我在JSON中返回用户字段的响应。我正在创建JSON,如下所示。

def user_response(users)
    users_array = []
    users.each do |user|
      uhash = {}
      uhash[:id] = user.id,
      uhash[:nickname] = user.nickname,
      uhash[:online_sharing] = user.online_sharing,
      uhash[:offline_export] = user.offline_export,
      uhash[:created_at] = user.created_at,
      uhash[:app_opens_count] = user.app_opens_count,
      uhash[:last_activity] = user.last_activity,
      uhash[:activity_goal] = user.activity_goal,
      uhash[:last_activity] = user.last_activity,
      uhash[:region] = user.region
      users_array << uhash
    end
    users_array
  end

但反应非常奇怪。哈希中的:id键具有所有字段的数组,不知道原因。

{
    "nickname": "adidas",
    "online_sharing": null,
    "offline_export": null,
    "created_at": "2016-08-26T09:03:54.000Z",
    "app_opens_count": 29,
    "last_activity": "2016-08-26T09:13:01.000Z",
    "activity_goal": 3,
    "region": "US",
    "id": [
      9635,
      "adidas",
      null,
      null,
      "2016-08-26T09:03:54.000Z",
      29,
      "2016-08-26T09:13:01.000Z",
      3,
      "2016-08-26T09:13:01.000Z",
      "US"
    ]
  }

3 个答案:

答案 0 :(得分:5)

这是由于您在每行末尾的,

答案 1 :(得分:3)

问题包括两件事:

  1. 分配评估为分配的值:

    puts (foo = 42) # => prints 42
    
  2. 多个值,在赋值右侧用逗号分隔,形成一个数组:

    bar = 1, 2, 3
    bar # => [1, 2, 3]
    
  3. 新行不会改变,所以你基本上做这样的事情:

    sonne = (foo = :eins), (bar = :zwei), (baz = :drei), (qux = :vier)
    sonne # => [:eins, :zwei, :drei, :vier]
    

    修复确实是删除逗号。

答案 2 :(得分:2)

每行末尾都有逗号scrollView.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 1).isActive = true;

,

此外,您可以将上述代码更改为:

uhash[:id] = user.id,