首页 > 解决方案 > 如何在rails的编辑表单中使用jquery验证来验证唯一的电子邮件ID

问题描述

我正在研究 ruby​​ on rails 并在我的应用程序中使用 jquery 验证。在 Employee Master 中,新表单电子邮件 ID 唯一性远程工作正常,但在编辑表单电子邮件 ID 唯一性中,我正在使用相同的远程,远程呼叫与新页面相同。

employee_masters/新

在此处输入图像描述

员工编辑页面

employee_masters/12/edit 在此处输入图像描述

employee_masters/new.html.erb

<%= form_for(@employee_master, :html => {class: "form-horizontal",id: "employee_validation"}) do |f| %>

    <div class="form-horizontal ">
        <div class="form-group">
     <label class="required col-sm-3 control-label" for="textInput-modal-markup">First Name</label>
        <div class="col-sm-8">
        <%= f.text_field :fname, class:"form-control" %></div>
     </div>

 <div class="form-group">
      <label class="col-sm-3 control-label" for="textInput-modal-markup">Middle Name</label>                                          
     <div class="col-sm-8">
      <%= f.text_field :mname, class:"form-control" %></div>
        </div>

  <div class="form-group">
  <label class="required col-sm-3 control-label" for="textInput-modal-markup">Last Name</label>
   <div class="col-sm-8">
   <%= f.text_field :lname, class:"form-control" %></div>
   </div>

    <div class="form-group">
    <label class="required col-sm-3 control-label" 
        for="textInput-modal-markup">Email Id</label>
      <div class="col-sm-8">
           <%= f.text_field :email_id, class:"form-control" %> 
      </label>
    </div>
 </div>

   <p style="float:right;">
    <%= f.submit "Save" ,style:"float:right", class:"btn btn- 
   primary btn-xs" %>&nbsp; <p>
   <br>
    <hr>
 </div>

employee_masters/edit.html.erb

<%= form_for(@employee_master, :html => {class: "form-horizontal",id: "employee_validation"}) do |f| %>

    <div class="form-horizontal ">
        <div class="form-group">
     <label class="required col-sm-3 control-label" for="textInput-modal-markup">First Name</label>
        <div class="col-sm-8">
        <%= f.text_field :fname, class:"form-control" %></div>
     </div>

 <div class="form-group">
      <label class="col-sm-3 control-label" for="textInput-modal-markup">Middle Name</label>                                          
     <div class="col-sm-8">
      <%= f.text_field :mname, class:"form-control" %></div>
        </div>

  <div class="form-group">
  <label class="required col-sm-3 control-label" for="textInput-modal-markup">Last Name</label>
   <div class="col-sm-8">
   <%= f.text_field :lname, class:"form-control" %></div>
   </div>

    <div class="form-group">
    <label class="required col-sm-3 control-label" 
        for="textInput-modal-markup">Email Id</label>
      <div class="col-sm-8">
           <%= f.text_field :email_id, class:"form-control" %> 
      </label>
    </div>
 </div>

   <p style="float:right;">
    <%= f.submit "Save" ,style:"float:right", class:"btn btn- 
   primary btn-xs" %>&nbsp; <p>
   <br>
    <hr>
 </div>

employee_master_validation.js

   $( "#employee_validation" ).validate({
   errorElement: 'span',
    errorClass: 'desc',
    ignore: ':hidden:not([class~=selectized]),:hidden > .selectized, .selectize-control .selectize-input input',
     rules: {
       "employee_master[fname]" : { required: true, lettersonly:true, minlength:3,maxlength:25 },
       "employee_master[lname]" : {required: true, lettersonly:true,minlength:1,maxlength:25 },
       "employee_master[email_id]" : {required: true, email: true,remote: "/employee_masters/check_email_id/"}
     },
     messages: {
       "employee_master[fname]" : { required: "Fname is required", lettersonly:"Enter only letters" ,
                                       minlength: "Fname should be atleast 3 charecter",
                                       maxlength: "Fname should not be more than 25 charecter"},
       "employee_master[lname]" : {required: "Last name is required", lettersonly:"Enter only letters",
                                     minlength: "Lname should be atleast 1 charecter",
                                     maxlength: "Lname should not be more than 25 charecter" },

       "employee_master[email_id]" : {required: "Email id is required", email: "Enter valid email id",remote: "Email Id already Exists"},

     },
    highlight: function (element) {
      $(element).closest('.col-sm-8').removeClass('success').addClass('has-error');
    },
    success: function (element) {
      element.addClass('valid').closest('.col-sm-8').removeClass('error').addClass('has-success');
    }
 });

employee_master_controllers.rb

  def check_email_id
     @employee= 
      EmployeeMaster.find_by_email_id(params[:employee_master] 
                                                [:email_id])
        respond_to do |format|
       format.json {render :json => !@employee}
     end
    end

编辑错误消息时出现“电子邮件已存在”,请告诉我如何解决此问题,如何编写编辑验证表单的代码

标签: javascriptjqueryruby-on-railsrubyjquery-validation-engine

解决方案


推荐阅读