将json数组发布到rails服务器

时间:2015-07-18 06:35:18

标签: ruby-on-rails arrays json

我想知道如何将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, ...

4 个答案:

答案 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]