0

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 をインストールしました。それはここでは問題ではありません。

4

1 に答える 1

1

paramRoot はバックボーン コアの一部ではありません。この問題を解決するには、Backbone-Rails gem から同期ライブラリhttps://raw.github.com/codebrew/backbone-rails/master/vendor/assets/javascripts/backbone_rails_sync.jsを含めて、ユーザーを作成する必要がありました。パラメータルートの一部

  url: '/users.json',
  paramRoot: 'user',
于 2013-02-09T02:13:03.923 に答える