Backbone with Devise を使用して登録する Rails アプリをセットアップしようとしています。
Chrome コンソールのエラー コールバックの応答テキストには、
responseText: "{"errors":{"email":["can't be blank"],"password":["can't be blank"]}}"
ただし、サーバーのログには処理不能なエンティティと表示されます
Parameters: {"email"=>"pp@rr.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "registration"=>{"email"=>"pp@rr.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}}
(0.1ms) begin transaction
(0.1ms) rollback transaction
Completed 422 Unprocessable Entity in 4ms (Views: 0.3ms | ActiveRecord: 0.1ms)
保存用の URL を設定するバックボーン ユーザー モデルがあります。
UserRegistration = Backbone.Model.extend({
url: '/users.json',
paramRoot: 'user',
defaults: {
"email": "",
"password": "",
"password_confirmation": ""
}
});
関連付けられたビューで、登録フォームから属性を取得し、それらをモデルに設定して、モデルを保存します。
var email = $('#email').val();
var password_confirmation = $('#password_confirmation').val();
var password = $('#password').val();
this.model.set({email : email, password_confirmation: password_confirmation, password: password})
this.model.save(this.model.attributes, {
success: function(userSession, response) {
console.log("success");
console.log(userSession);
console.log(response);
console.log(this.model.url);
},
error: function(userSession, response) {
console.log("error");
console.log(userSession);
console.log(response);
}
});
}
モデル属性を設定した後 (保存前)、console.log(this.model.attributes) を実行し、設定されました
Object {email: "oo@gmail.com", password: "snowy", password_confirmation: "snowy"}
私のユーザーモデルは次のようになります
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
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
誰でも提案できますか?
最近の Devise リリースでは html のみに応答するという最近の問題がいくつかあったため、Backbone と互換性を持つように json で応答するように Devise 2.1.2 をインストールしました。それはここでは問題ではありません。