2016-07-26 3 views
0

JSの一意性の属性を検証し、そのHTMLにエラーメッセージを表示する方法があるのだろうか? 私はすでにモデルのバックエンド検証を行っていますRuby on RailsアプリケーションでJSの電子メールの一意性を検証する方法はありますか?

+0

一意性チェックのためにサーバーに問い合わせるには、ajaxリクエストが必要です。対応するメッセージを表示します。 ParsleyやJqueryの検証のようなフロントエンド検証プラグインを使用していますか? –

+0

これまでのところ、私はフロントエンド検証プラグインを一切使っていません。 –

+0

純粋なjavascript/jqueryの方法でやりましょう。私は正しい答えを教えてください –

答えて

0

サーバーに一意性検査を依頼するには、ajaxリクエストが必要です。対応するメッセージを表示します。 だから、あなたが一意のメールを求めるために、サーバーを要求する必要があなたの電子メールの入力フィールドのkeypressまたはchangeイベントに続いてroutes.rb

post "/check_email" => "main#check_email" #I am assuming you have "main" controller. other wise replace "main" with your actual controller name

の開始時に次の行を追加します。

$.ajax({url: '/check_email',method: 'POST', 
data: {email : '[email protected]'}, 
success: function(response){ 
    if(response && response.message=='ERROR'){ 
     alert("This Email already taken") 
    } 
}}); 

このスクリプトは、上記経路へのAJAXリクエストを送信し、パラメータとしてemailを通過しています。 (私はここで電子メールをコーディングして、$("#my_email_field").val()のような適切な値を設定する必要があります)

コントローラにactionを追加する必要があります。 (この場合はmainController

class MainController < ApplicationController 
    def check_email 
    email_found = User.where(email: params[:email]).count > 0 #Whatever your logic is to find duplicate emails 
    message = email_found ? "ERROR" : "SUCCESS" 
    render json: {message: message} 
    end 
end 
+0

完璧に働いた、ありがとう! –

0

あなたはバックエンドに電話をかけなければなりません。あなたが電子メールとして持っているものと何が提出されているのかを比較し、これらのデータだけをバックエンドに置くべきです。 スピードが心配な場合は、高速バリデーションのための単純なロジックを持つ別のコントローラを使用してみることができます。

関連する問題