私は登録フォームを送信するためにajaxを使用しています。この422(Unprocessable Entity)エラーについて心配する必要がありますか? (Rails&Devise)
詳細が正しい時に正しく送信されたフォーム。詳細が間違っていれば、エラーを正しく捕捉することもできます。しかし、詳細が間違っている場合、私はまた私のコンソールログにPOST http://localhost:3000/users 422 (Unprocessable Entity)
エラーメッセージを見ることができる:
私の質問は、私はこのエラーを心配する必要があります、ありますか?これは正常ですか? これが正常でない場合、正しく処理するにはどうすればよいですか?
ありがとうございます!
################################ UPDATE ############端末から##################
エラーメッセージ:
Started POST "/users" for ::1 at 2016-06-15 09:20:20 +0100
Processing by RegistrationsController#create as JSON
Parameters: {"utf8"=>"✓", "authenticity_token"=>"0D1qSK8IfbuefQ0bwEdKQFD+6WZ8XJtCnl2FZ6Nln9khLtv6qYCmoTKhwBFkVIJdYXSRQJ4e+9QAAdJ5UJzukQ==", "user"=>{"first_name"=>"John", "last_name"=>"Doe", "email"=>"[email protected]", "password"=>"[FILTERED]"}, "commit"=>"Sign up"}
(0.2ms) BEGIN
User Exists (0.6ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY '[email protected]' LIMIT 1
(0.2ms) ROLLBACK
Completed 422 Unprocessable Entity in 93ms (Views: 0.4ms | ActiveRecord: 1.1ms)
登録コントローラ:
class RegistrationsController < Devise::RegistrationsController
respond_to :json
def create
super
end
end
のapplication.js:
$(function(){
$("form#ajax_signup").submit(function(e){
e.preventDefault();
var user_info = $(this).serializeObject();
console.log("About to post to /users: " + JSON.stringify(user_info));
$.ajax({
type: "POST",
url: "http://localhost:3000/users",
data: user_info,
success: function(json){
console.log("The Devise Response: " + JSON.stringify(json));
},
error: function(xhr) {
var errors = jQuery.parseJSON(xhr.responseText).errors;
for (messages in errors) {
error_messages = messages + ' ' + errors[messages];
console.log(error_messages);
}
},
dataType: "json"
});
});
});
あなたは内の関連するログエントリの残りの部分、および(使用中の強いのparams方法を含む)責任コントローラメソッドを置いてもらえません。 – Matt
もちろん、このPOSTアクションが何らかの理由で失敗した場合(「電子メールアドレスの取得」)、いくつかの4xx応答が返されることに注意してください。あなたは何を期待していますか?クライアント側の検証をしたいだけですか?それでも、サーバーによって送信されたエラー応答を処理する必要があります。 – matthias
@Matt質問に関するいくつかの詳細を投稿しました –