我想知道如何将json数组直接发布到rails服务器。说,
POST '/api/notes_bulk', HTTP/1.1
Content-Type: application/json
[{“content”:”content1”, “title”:”title1”}, {“content”:”content2”, “title”:”title2”}, {“content”:”content3”, “title”:”title3”}, {“content”:”content4”, “title”:”title4”}, {“content”:”content5”, “title”:”title5”}]
我做了一些关于它的搜索,所有的例子都有一些映射到数组的键。在我的情况下,json是顶层的数组。
如何在控制器代码中获取json数据?我注意到rails使用" _json"关键,但当我访问它时,它说
Unpermitted parameters: _json, ...
。
答案 0 :(得分:1)
在这种情况下,您无法使用Rails中的内置参数,但您可以创建自己的解析器:
def create
contents = JSON.parse(request.raw_post)
end
contents
变量将是您发布的数组。
答案 1 :(得分:1)
您可以使用'_json'键来访问数据。要删除警告,您必须允许来自JSON数组的所有对象键。在你的情况下:
params.permit(_json: [:content, :title])
答案 2 :(得分:0)
我认为您面临的问题与强参数有关。 你需要在控制器中允许json params。 使用params.require(:object).permit(允许的参数列表)
答案 3 :(得分:0)
我认为这可能会迟到,但只是发布在这里,因为这个问题没有得到答复,也没有给未来的访问者。
您必须将JSON字符串包装到对象中。例如,您可以构造Json字符串,例如
var contentArray = [{“content”:”content1”, “title”:”title1”}, {“content”:”content2”, “title”:”title2”}];
var contentObj = {contents: contentArray};
在将其提交给Rails之前
jsonData = JSON.stringify(contentObj);
在Rails控制器中访问它:
myContentArray = params[:contents]