我正在使用Devise 1.4.7并尝试将client_side_validations 3.1.0集成到我的项目中。我通过编写一个控制器my_registrations_controller扩展了注册控制器,该控制器继承自Devise的registrations_controller,使用Super,并通过routes.db指向它:
devise_for :users, :controllers => { :registrations => "my_registrations" }
my_registrations中的new.html.erb文件视图如下所示:
<h2>Sign in</h2>
<% if !flash[:notice].blank? || !flash[:alert].blank? %>
<div class="notice">
<%= flash[:alert]%>
<%= flash[:notice]%>
</div>
<% end %>
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :Password %><br />
<%= f.password_field :Password %></div>
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end -%>
<div><%= f.submit "Sign in" %></div>
<% end %>
<%= render :Partial => "devise/shared/links" %>
我按照client_side_validations说明添加了必要的javascript库,将“rails.validations”添加到application.html.erb文件中,并在设计初始化文件中取消注释必要的行。
client_side_validations提供了一个示例,用于在表单如下所示集成其验证:
<%= form_for @user, :validate => true do |u| -%>
然而,Devise的形式是不同的,尽管我把“:validate =&gt; true”放在
中 <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
...表单中没有弹出消息?我确定我错过了一些明显的东西。
注意:没有client_side_validations,如果我将电子邮件字段或密码字段留空并单击“注册”,我会从服务器收到“不能为空”的错误消息。