我是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为空。
答案 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。