0

JSON POST を介して Rails 3 にオブジェクトを保存する方法を知りたいですか?

問題は、UsersController.rbがJSON POSTパラメーターを認識せず、要求にパラメーターがないと想定することです。

問題をデバッグするためだけに、同じことを行う2つの作成メソッドがあります。前もって感謝します!

Routes.rb

post 'users'          => "users#create"
match 'users/create'  => "users#create_user", :via => [ :post]

ユーザー.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable,
         :validatable, :token_authenticatable #, :omniauthable

  has_many :leader_boards

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :authentication_token , :first_name, :large_profile_image_url, :last_name, :profile_image_url, :provider, :uid

  validates :email, :uniqueness => { :case_sensitive => false }
  validates :email, :first_name, :last_name, :presence => true
  validates :password, :password_confirmation, :presence => true
  validates :password, :length => { :minimum => 8 }

  def name
    return self.first_name.to_s + ' ' + self.last_name.to_s
  end
end

ユーザーコントローラー.rb

module Api
  module V1
    class UsersController < ApplicationController
      before_filter :authenticate_user!, :except => [:create, :show, :update, :create_user, :facebook,:leader_board]
      respond_to :json

      def create
        @user = User.create(params[:user])
        begin
          @user.reset_authentication_token!
        rescue

        end
        respond_with @user
      end

      def create_user
        begin
          @user = User.new
          @user.email = params[:email]
          @user.password  = params[:password]
          @user.password_confirmation   = params[:password_confirmation]
          @user.first_name = params[:first_name]
          @user.last_name  = params[:last_name]
          @user.save
        rescue

        end
        respond_with @user
      end

JSON 投稿

{ "email": "jordanpass@jordanpass.cpm", "first_name": "mike", "last_name": "jordan", "password": "jordanpass", "password_confirmation": "jordanpass" }

応答

{"errors":{"email":["can't be blank","can't be blank"],"password":["can't be blank","can't be blank","is too short (minimum is 8 characters)"],"first_name":["can't be blank"],"last_name":["can't be blank"],"password_confirmation":["can't be blank"]}}

サンプル投稿の代替スクリーンショット

4

1 に答える 1