我正在使用Ruby on Rails,我有一个可以通过AJAX创建帖子的按钮,使用它:
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader(
'X-CSRF-Token',
$('meta[name="csrf-token"]').attr('content'))},
url: "/posts/",
type: "POST",
data: {
post: {
title: "Cheese",
content: "Cake",
}
}
});
如何格式化数据以一次创建多个帖子,例如
posts = [
{
title: "Cheese",
content: "Cake"
},
{
title: "Key Lime",
content: "Pie"
}
]
所以我可以用一个POST插入多个对象吗?
我有一个标题和内容列表。我可能需要用这些来构造一个JSON对象吗?
无论这是否是好的Rails练习,我该怎么做?另外,我在哪里可以查找如何格式化此类HTTP请求?
答案 0 :(得分:3)
你的jQuery调用不会有太大变化:
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader(
'X-CSRF-Token',
$('meta[name="csrf-token"]').attr('content'))},
url: "/posts/",
type: "POST",
contentType: "application/json",
data: JSON.stringify({
posts: [
{
title: "Cheese",
content: "Cake",
},
{
title: "Key Lime",
content: "Pie"
}
]
})
});
在您的Rails操作中,您可以通过params[:posts]
以哈希数组的形式访问您的帖子。
class ThingsController < ApplicationController
def batch_create
params[:posts].each do |post|
Post.create post
end
end
end
<强>解释强>
使用JSON.stringify
会将您的数据序列化为JSON。将contentType
设置为application/json
,将“Content-Type:'application / json'”标头添加到POST中。这将使Rails能够将您的POST解释为JSON。