使用带有Client_Side_Validations的Devise设置form_for

时间:2011-10-24 13:20:26

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

我正在使用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,如果我将电子邮件字段或密码字段留空并单击“注册”,我会从服务器收到“不能为空”的错误消息。

0 个答案:

没有答案