0

私はこの問題を抱えています:コントローラーでユーザーの電子メールをチェックしており、既に取得されている場合はjsonの成功した応答を送信し、入力のcssスタイルを追加しています。また、送信を防止してメッセージを追加する必要があります。

これが私のcheckemailアクションです(この記事を使用 - http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery):

def checkemail
  if !User.where('email = ?', params[:email]).empty?
    format.jsonr do
      render :json => { 
        :status => :ok, 
        :message => "Success!",
      }.to_json
    end
  end
end

そして私のルートでは:

         checkemail GET    /checkemail(.:format)

          match "/checkemail", to: 'edit_user#checkemail'

そして私のjQuery:

   $('#user_email').focusout(function() {
    $.getJSON('/checkemail', { email: $('#user_email').val() }, function(data) {
        $('#user_email').addClass("error");
      });
   });

私のHTML入力コード:

     <input id="user_email" name="user[email]" size="30" type="email" value="">

mime_type 初期化ファイルから:

    Mime::Type.register_alias "application/json", :jsonr, %w( text/x-json )

フィドラーから:

  Request : GET /checkemail?user@mail.com HTTP/2.0

  Response(RAW tab) : 
  Missing template edit_user/checkemail

  JSON tab is empty

質問: json リクエストが送信されたかどうかを調べる方法は? 送信フォームを防止してメッセージを追加するにはどうすればよいですか?

4

1 に答える 1

1

私は次のようにします:

$('#element').focusout(function() {
  $.getJSON('PATH_TO_EMAIL_CHECK_ACTION', { email: $('#element').val() }, function(data) {
    // The data should tell you if its unique or not, you do something
    // here depending on response 
  });
});

コントローラーで、メールが取得されているかどうかを確認します。そうでない場合は、レンダリング json をステータス OK とメッセージ success で送り返します。コメントが上にあるコールバックでステータスが成功かどうかを確認できます。

jquery focusout - http://api.jquery.com/focusout/

jquery getJSON - http://api.jquery.com/jQuery.getJSON/

コントローラーの json 応答について - http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery

于 2012-09-08T16:14:02.690 に答える