如何从我的控制器解析传入的JSON?

时间:2016-07-18 15:12:30

标签: ruby-on-rails json

我是JSON,将以下JSON发布到我的控制器:

{"user_id": 234324, "user_action": 2, "updated_email": "asdf@asdf.com" }

在我的控制器中,我可以看到JSON正确发布但我不确定如何访问它:

def update_email
  puts request.body.read.html_safe

  user_id = params[:user_id]
  user = User.find(user_id)
end

我正在我的controller_spec中对此进行测试,目前它正在抛出一个异常并显示id为空。

2 个答案:

答案 0 :(得分:0)

这可能是重复的 - 请参阅:How do I parse JSON with Ruby on Rails?

我不确定你是如何传递JSON的。它是POST参数的一部分吗?在标题?或者是其他东西。我的猜测是,您要么将其作为参数传递,要么应该这样做:例如: myJson = {" user_id":234324," user_action":2," updated_email":" asdf@asdf.com" }

就解析而言,你应该能够使用内置的JSON类。

hash = JSON.parse params["myJson"]

答案 1 :(得分:0)

使用params访问它是正确的方法。

在你的情况下:

params["user_id"] # => 234324

request.body.read不应该在现实世界中使用,仅用于调试,因为action_dispatch会为您执行所有调度(例如解析JSON或表单数据)。

注意:您需要设置正确的标头,以便让您知道您正在传递JSON。