将[object Object]转换为JSON

时间:2019-02-18 07:47:49

标签: ruby-on-rails ruby

我必须将一些参数从js传递到rails。而且由于参数太长,我必须使用post方法并将参数设为JSON,而不是字符串。但是我无法在Rails中将这些部分改回JSON。

<ActionController::Parameters {" "=>nil, "test"=>"[object Object]", "controller"=>"super", "action"=>"addArticle"} permitted: false>

我想在parms[:test]中获取参数[sic]。但是我只能得到这个:

params[:test]
#=> [object Object]

所以,请帮助我。

1 个答案:

答案 0 :(得分:3)

我认为您正在通话中传递对象

$.ajax.post('/to/some/url', data: { test: js_object } );

其中test类似于{ "some" : "value" }

您需要做的是首先对对象进行字符串化。这样的事情应该做:

$.ajax.post('/to/some/url', data: { test: JSON.stringify(js_object) } );

直接发送对象时,JavaScript将它们转换为字符串,而JS自动将对象转换为字符串时,它将其转换为[object Object]

为了证明,只需在控制台中依次运行以下几行:

console.log({a:'b'});
console.log({a:'b'}.toString());
console.log(JSON.stringify({a:'b'}));

您会发现差异!