2

私はRubyonRailsを使用しており、これを使用して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"
}
]

1つのPOSTで複数のオブジェクトを挿入できますか?

タイトルと内容のリストがあります。これらからJSONオブジェクトを作成する必要がありますか?

これがRailsの優れたプラクティスであるかどうかに関係なく、これを行うにはどうすればよいですか?また、そのようなHTTPリクエストをフォーマットする方法をどこで探すことができますか?

4

1 に答える 1

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としてシリアル化されます。「Content-Type:'application/json'」ヘッダーをPOSTに追加するように設定contentTypeします。application/jsonこれにより、RailsがPOSTをJSONとして解釈する手がかりになります。

于 2013-01-23T07:57:10.487 に答える