如何从ruby控制器中的条带返回获取值

时间:2016-11-08 21:30:09

标签: ruby-on-rails

我从条纹中获得了一个返回并试图解析它并且显然是在做错了。

stripe_webhooks.rb控制器中的代码

@event_data = JSON.parse(request.body.read)

当我记录那是完全返回。但是,当我尝试访问任何这样的值时(这是我在工作的教程中设置的方式)

@event_data.data.object.id

我收到错误

NoMethodError (undefined method `data' for #<Hash:0x007fe533bebe08>):

我需要访问(除其他外)的是来自费用的id,而不是该事件的第一个id。所以在下面的输出中带有“ch _...”的id。

输出记录

Parameters: {"id"=>"evt_19DMt92cKHX9k3v0rcdvLs5a", "object"=>"event", "api_version"=>"2014-03-28", "created"=>1478562655, "data"=>{"object"=>{"id"=>"ch_19DMt92cKHX9k3v0iQKMEHDu", "object"=>"charge",...

如果有人能够了解如何访问“data =&gt; {”object“=&gt; {”部分内的数据,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

您希望使用bracket accessors访问正在加载的哈希值。

@event_data["data"]["object"]["id"]`

它将为您提供您正在寻找的东西。

同样很多次ruby代码更喜欢使用symbols,这意味着你可以使用

@event_data = JSON.parse(request.body.read).with_indifferent_access

通过

访问相同的内容
@event_data[:data][:object][:id]

请注意,这些解决方案不会处理缺失值,在这种情况下,您需要防止访问者返回nil而不是您定义的结构。