2016-04-13 10 views
0

AngularJS(フロントエンド)からRails(バックエンド)へのパスワードリセットを有効にしようとしています。AngularJS(フロントエンド)からパスワードをリセットするための投稿

しかし、私が投稿しているJSONは純粋なレールアプリから投稿されるハッシュと似ていないので、私はそれを複製することができませんでした。同じメカニズムの

マイJSON

Parameters: {"email"=>"[email protected]", "password"=>{"email"=>"[email protected]"}} 

のRailsアプリのハッシュ、以下

Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "user"=>{"email"=>"[email protected]"}, "commit"=>"Send me reset password instructions"} 


は、参考のために私の現在のコードです。

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

工場アクション

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

コントローラ

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

ビューは、誰がどのように助言することができますユーザーパスワードをリセットするためにAngularJSからPOSTDevise::PasswordsController#createを正しく設定するにはどうすればよいですか?

(理想的には$ HTTPを使用して)

答えて

2

Railsはユーザーハッシュ内にネストされるパスワードや電子メールのためのparamsを期待しています。下の行にはパラメータのハッシュを含める必要があります

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

メールとは何ですか?あなたは

var user_details = {email: "[email protected]", password: "[email protected]"} 

あなたのparamsを保持する変数を設定する場合はあなたのポストの要求が

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

ことができるそれは最初で働くことになりそうだが、その後、 '406ないAcceptable'で応答 - 間違ったヘッダを意味しています? –

+1

厳密に言えば、これは別の質問です。 406は、バックエンドによって生成された応答が、要求によって提供された形式に受け入れられないことを意味します。対応するコントローラーアクションで[respond_block](http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to)が必要になる場合があります。 – margo

関連する問題