我必须将一些参数从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]
所以,请帮助我。
答案 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'}));
您会发现差异!