2015-05-15 2 views
1

Я работаю над приложением, которое имеет bootstrap modal (для входа/регистрации), где выполняется проверка на стороне клиента. Когда вы пытаетесь войти в систему с регулярным, но не существующим электронным письмом в db, выполняется проверка сервера на стороне сервера, и вы перенаправляетесь на страницу пользователей/подписей.Как включить проверку на стороне клиента в Bootstrap modal

Итак, вместо этого перенаправления мне нужно сделать проверки на стороне клиента и показать сообщение об ошибке в модальном режиме. Проблема в том, что я работаю над реальным, большим приложением в первый раз, и я не могу найти место, где выполняются эти проверки и перенаправления. Я не могу найти соответствующий файл JS или действия контроллера ..

модель

Пользователь:

validates :password, presence: true, :on => :create 
    validates :password, confirmation: true, :on => :create 
    validates :email, presence: true 
    validates :username, uniqueness: true, presence: true 
    validates_format_of :username, :with => /^[a-z\d]*$/, :message => "Just letters and numbers please" 

Modal для регистрации:

#modal-registration.modal.hide.fade{"aria-hidden" => "true", "aria-labelledby" => "registrationLabel", role: "dialog", tabindex: "-1"} 
    .modal-header 
    %button.close{"aria-hidden" => "true", "data-dismiss" => "modal", type: "button"} × 
    %h3#myModalLabel Registration 
    .modal-body 
    .row-fluid 
     .span6 
     = simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), html: { class: "form", id: "registration-form" }, :validate => true) do |f| 
      .control-group 
      .controls 
       = f.input :email, autofocus: true, label: false, placeholder: 'email' 
      .control-group 
      .controls 
       = f.input :username, autofocus: true, label: false, placeholder: 'Username' 
      .control-group 
      .controls 
       = f.input :password, label: false, placeholder: 'Password' 
      .control-group 
      .controls 
       = f.input :password_confirmation, label: false, placeholder: 'Password confirmation' 
      .control-group 
      .controls 
       = f.button :submit, "Registration" 
     .span6 
     = link_to "Registration via Facebook", "#", class: "btn btn-large btn-block" 
     = link_to "Registration via LinkedIn", "#", class: "btn btn-large btn-block" 
    .modal-footer 
    %button.btn{"aria-hidden" => "true", "data-dismiss" => "modal"} Close 

Client_side_validation JQuery:

jQuery -> 
    $("#modal-registration, #modal-sign-in").on "shown", -> 
    $(ClientSideValidations.selectors.forms).validate() 

использовано gems: devise, client_side_validations, client_side_validations_simple_form, bootstrap, haml.

+0

попробовать HTTP: //jqueryvalidation.org/.... буду любить его – Milind

ответ

0

Вы попробовали rails bootstrap forms gem?

Вы можете сделать на сторону клиента валидации с рельсами начальной загрузкой формы жемчужиной легко

Вам нужно только добавить remote: true код, например:

= bootstrap_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :remote => true) do |f| 
    = f.email_field :email 
    = f.text_field :username 
    = f.password_field :password 
    = f.password_field :password_confirmation 
    = f.submit 
+2

Возможно, я делаю что-то не так, но я не нашел это, чтобы работать из коробки вообще ... –

Смежные вопросы