2013-01-23 44 views
2

我使用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请求?

回答

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。