使用Devise进行客户端验证

时间:2012-02-16 11:26:56

标签: ruby-on-rails devise client-side-validation

我正在尝试使用带有Devise的client_side_validations gem来验证设计注册表单。

验证可以正常使用其他所有内容,而不是Devise生成的表单。

我添加了相关内容:validate =>是的,但验证只有在我点击提示不在选项卡上时才有效,就像在其他表格上一样。

<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" %>

5 个答案:

答案 0 :(得分:4)

Argc,argv!我正在使用Rails 3.2.1,宝石的最新版本与3.2不相容,因此是噩梦。使用3.2.0.beta.2修复了这些问题。谢谢!

答案 1 :(得分:3)

尝试输入:validates =&gt;在您的字段上直接为true,如下所示:

<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" %>

答案 2 :(得分: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| %>

答案 3 :(得分: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| %>

有帮助吗?

答案 4 :(得分:0)

要使用稳定版本,请使用支持rails 3.2.x的最新稳定版3.0.3