2012-02-16 6 views
2

Я пытаюсь использовать камень client_side_validations с помощью Devise для проверки формы регистрации форм.Проверка на стороне клиента с помощью Devise

Валидации работают отлично со всем остальным, а не с созданной формой.

Я добавил соответствующий: validate => true, но проверки выполняются только тогда, когда я нажимаю submit не на вкладке, как в любой другой форме.

<h2>Sign up</h2> 
<hr /> 

<%= form_for(resource, :validate => true, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <div><%= f.label :username %> 
    <%= f.text_field :username %></div> 

    <div><%= f.label :email %> 
    <%= f.email_field :email %></div> 

    <div><%= f.label :password %> 
    <%= f.password_field :password %></div> 

    <div><%= f.label :password_confirmation %> 
    <%= f.password_field :password_confirmation %></div> 

    <br /> 

    <div><%= f.submit "Sign up", :class => "btn btn-primary btn-large" %></div> 
<% end %> 

<%= render "links" %> 

ответ

4

ARGC, ARGV! Я использую Rails 3.2.1, последняя версия драгоценного камня несовместима с 3.2, следовательно, кошмаром. Использование 3.2.0.b.2 исправляет проблемы. Благодаря!

1

Я еще не пользовался клиентом client_side_validations gem. Но по внешнему виду он должен иметь data-validate = "true" в тегах формы (и элементов формы).

ли вы его в выходной HTML форме, как:

<form novalidate="novalidate" method="post" data-validate="true" action="/some_actions" > 

Если вы не найдете его, вы можете написать свой form_for так:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), {:validate => true}) do |f| %> 

Поможет ?

+0

https: // суть .github.com/1844399 data-validate = true –

+0

В соответствии с потреблением драгоценных камней вам нужны эти файлы js , javascript_include_tag 'jquery', 'rails' 'rai ls.validations '-%> Они тоже на странице html? –

+0

Да, очевидно, все это на месте, и именно поэтому оно отражается так, как оно есть. –

3

Попробуйте поставить: проверяет => верно на ваших полях непосредственно, как это:

<h2>Sign up</h2> 
<hr /> 

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <div> 
    <%= f.label :username %> 
    <%= f.text_field :username, :validate => true %> 
    </div> 

    <div> 
    <%= f.label :email %> 
    <%= f.email_field :email, :validate => true %> 
    </div> 

    <div> 
    <%= f.label :password %> 
    <%= f.password_field :password, :validate => true %> 
    </div> 

    <div> 
    <%= f.label :password_confirmation %> 
    <%= f.password_field :password_confirmation, :validate => true %> 
    </div> 

    <br /> 

    <div> 
    <%= f.submit "Sign up", :class => "btn btn-primary btn-large" %> 
    </div> 
<% end %> 

<%= render "links" %> 
+0

Пробовал это уже, не кубики! Я переопределяю валидации в моей модели пользователя, поэтому случай условного фильтра не применяется. –

2

изменение линии

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 

в

<%= form_for(@user, :url => registration_path(resource_name), :validate => true) do |f| %> 
0

Чтобы использовать стабильную версию использования 3.0.3, которая была последней стабильной версии поддерживает рельсы 3.2.x

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