2013-02-13 5 views
0

Je voudrais savoir comment sauvegarder un objet dans les rails 3 via un POSTER JSON?Comment enregistrer un objet rails à partir d'un POSTER JSON?

Le problème est que UsersController.rb ne reconnaît pas les paramètres JSON POST et suppose qu'il n'y a pas de paramètres dans la requête.

J'ai deux méthodes de création qui font la même chose, juste pour déboguer le problème. Merci d'avance!

routes.rb

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

User.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 

UsersController.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 POST

{ "email": "[email protected]", "prenom": "micro", "last_name": "jordan", "mot de passe": "jordanpass", « password_confirmation « : "jordanpass"}

Réponse

{"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"]}} 

Sample post Screenshot Alternative

+0

Voici une version proche de ce que nous utilisons: https://github.com/garysweaver/restful_json et un Exemple d'application: https://github.com/FineLinePrototyping/employee-training-trackerapi/rails-api/ –

Répondre

4

Votre message JSON:

{ "email": "[email protected]", "prenom": "micro", "last_name": "jordan", « Mot de passe ":" jordanpass "," password_confirmation ":" jordanpass "}

est incorrect. Comme le contrôleur recherche params[:user], votre JSON doit être:

{ "utilisateur": { "email": "[email protected]", "prenom": "micro", "last_name": " jordan », "mot de passe": "jordanpass", "password_confirmation": "jordanpass"}}

+0

Merci, j'ai essayé et j'ai la même réponse. Ceci est une capture d'écran: http://i.stack.imgur.com/u78iu.png – ipegasus

+0

@ipegasus comment avez-vous résolu cela finalement? J'ai le même problème et mon json est 100% correct – carbonr

+2

Vous m'a sauvé aujourd'hui! Merci. –

Questions connexes