代码之家  ›  专栏  ›  技术社区  ›  tim_xyz

从AngularJS(前端)发布到Devise以重置密码

  •  0
  • tim_xyz  · 技术社区  · 9 年前

    我正在尝试启用从AngularJS(前端)到Rails(后端)的密码重置。

    但我发布的JSON与纯rails应用程序发布的哈希不相似,我无法复制它。

    我的JSON

    Parameters: {"email"=>"jim@example.com", "password"=>{"email"=>"jim@example.com"}}
    

    相同机制的Rails应用哈希,

    Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "user"=>{"email"=>"jim@example.com"}, "commit"=>"Send me reset password instructions"}
    


    下面是我当前的代码供参考。

    工厂行动

    u.recoverPassword = function(email) {
        return $http.post('/users/password', email).success(function(data) {
            console.log(data);
        });
    };
    

    控制器

    $scope.emailForPassword = function() {
        users.recoverPassword(
                {email: $scope.emailForLostPassword}
            );
    };
    

    看法

    <form ng-submit="emailForPassword()">
        <div class="input-group form-field">
            <input type="email" class="form-control input-field" placeholder="Email" ng-model="emailForLostPassword">
        </div>
        <input type="submit" class="btn btn-default" value="Log In">
    </form>
    

    谁能建议如何设置一个合适的 POST Devise::PasswordsController#create 为了重置用户密码?

    (理想情况下使用$http)

    1 回复  |  直到 9 年前
        1
  •  2
  •   margo    9 年前

    Rails希望密码和电子邮件的参数嵌套在用户哈希中。下面的行需要包含参数的散列

    return $http.post('/users/password', email).success(function(data) {
    

    什么是电子邮件?如果您设置了一个变量来保存参数

    var user_details = {email: "jim@example.com", password: "jim@example.com"}
    

    您的帖子请求可以是

    return $http.post('/users/password', user: user_details).success(function(data) {