Ruby on rails AngularJS Rails用户无需设计即可注册

Ruby on rails AngularJS Rails用户无需设计即可注册,ruby-on-rails,angularjs,user-registration,Ruby On Rails,Angularjs,User Registration,我正在尝试创建一个注册流,Angular客户端通过$resource服务向服务器发送用户输入。Rails端的用户模型在模型上有一个has_secure_password、password_digest字段 问题是: 1 Rails向Angular客户端发送密码丢失的错误,即使密码没有丢失。 2密码和确认信息似乎没有通过电子邮件发送? 3密码摘要未设置,仍然为零 1 Rails向Angular客户端发送密码丢失的错误,即使密码没有丢失 Object { username: "testuser",

我正在尝试创建一个注册流,Angular客户端通过$resource服务向服务器发送用户输入。Rails端的用户模型在模型上有一个has_secure_password、password_digest字段

问题是: 1 Rails向Angular客户端发送密码丢失的错误,即使密码没有丢失。 2密码和确认信息似乎没有通过电子邮件发送? 3密码摘要未设置,仍然为零

1 Rails向Angular客户端发送密码丢失的错误,即使密码没有丢失

 Object { username: "testuser", first_name: "Test", last_name: "User", email: "test@sample.com", password: "password5375", password_confirmation: "password5375" } main.js:157
Object { data: Object, status: 422, headers: headersGetter/<(), config: Object, statusText: " " } main.js:163
"password:can't be blank"
3在控制台中,请注意,未设置密码摘要

 User Load (0.2ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
 => #<User id: 3, created_at: "2014-10-04 23:04:46", updated_at: "2014-10-04 23:04:46", username: "user3", first_name: "Uss", last_name: "ErThree", email: "user3@example.com", password_digest: nil>
1.9.3-p362 :010 > User.last.password_digest
  User Load (0.2ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
 => nil



app.factory('User', function($resource){
  function User() {
    this.service = $resource('/api/users/:id.json', {id: '@id'},
      {
        'update': {method: 'PUT'},
        'show': {method: 'GET', isArray: false}
      }
    );
  }



 User.prototype.all = function() {
    return this.service.query();
  };

  User.prototype.destroy = function(uid) {
    return this.service.remove({id: uid});
  }; 

  User.prototype.create = function(attributes) {
    return this.service.save(attributes);
  };

  User.prototype.update = function(attributes) {
    return this.service.update(attributes);
  };    

  User.prototype.show = function(uid) {
    return this.service.show({id: uid});
  }

  return new User;
});

    app.controller('UsersCreateCtrl', function($scope, User){
  $scope.createUser = function(){
    $scope.user;
    console.log($scope.user);
    var newUser = User.create($scope.user).$promise.then(function(data){
        console.log(data);
        $scope.users.push(newUser);
        $scope.user = {};
    }, function(msg){
        console.log(msg);
        angular.forEach(msg.data.errors, function(type, error){
            console.log(error + ":" + type);
        });
    });
  };
});

<h4>Register</h4>
<div ng-controller="UsersCreateCtrl">
  <form name="form" ng-submit="createUser()" novalidate>
    Name: <input name="username" type="text" ng-model="user.username" placeholder="username"/>
    First Name: <input name="first_name" type="text" ng-model="user.first_name" placeholder="first name" />
    Last Name: <input name="last_name" type="text" ng-model="user.last_name" placeholder="last name" />
    Email: <input name="email" type="text" ng-model="user.email" placeholder="email" />
    Password: <input name="password" type="text" ng-model="user.password" placeholder="password" />
    Confirm Password: <input name="password_confirmation" type="text" ng-model="user.password_confirmation" />
    <input type="submit" value="Register">
  </form>
</div>
编辑:Rails用户控制器已发布


结束

我猜您的rails控制器不允许向模型传递密码和密码确认,因为在强参数中不允许它们。要么这样,要么您没有将它们包含在正在发布的json用户对象中。因为您很可能正在执行User.create!params[:user],您需要确保已允许所有预期参数:

permitted_params = params[:user].permit(:username, :first_name, :last_name, :email, :password, :password_confirmation)
User.create!(permitted_params)

发布您的rails控制器i am允许通过强参数将密码和密码确认传递给模型。我的控制员被派上了。谢谢你的帮助。cc:@user2936314对于发布到创建操作的网络数据,浏览器的web检查器显示了什么?很明显,密码和密码确认没有在你的params[:user]散列中结束,这是你的问题…以下是我在网络数据-请求负载中看到的:{用户名:TheCatFelix,名字:TheCat,姓氏:Felix,电子邮件:felixthecat@thecat.com,密码:password53,password\u确认:password53}另外,我没有使用designe。我计划使用这里描述的令牌身份验证。你能在你的控制器中公布用户返回的参数以及参数是什么吗?
class UsersController < ApplicationController
respond_to :json

protect_from_forgery with: :null_session

def index
    respond_with User.all
end

def create
    respond_with User.create(user_params)
end

def destroy
    respond_with User.destroy(params[:id])
end

def show 
    respond_with User.find(params[:id])
end

def update
    respond_with User.find(params[:id]).update_attributes(source_params)
end

private
    def user_params
        params.require(:user).permit(:username, :email, :first_name, :last_name, :password, :password_confirmation)
    end
permitted_params = params[:user].permit(:username, :first_name, :last_name, :email, :password, :password_confirmation)
User.create!(permitted_params)