我遇到了注册表单的问题。它是使用SimpleForm创建的,使用Devise进行身份验证。提交表单时,如果电子邮件或密码为空,则会显示两次错误。在用户模型中,存在对名字,姓氏,配置文件名称,密码和电子邮件的存在验证。这些重复错误仅显示在空白电子邮件和密码字段中。任何其他空白字段都会这样说一次。
示例:
#错误禁止此用户被保存:
- 电子邮件不能为空
- 电子邮件不能为空
- 密码不能为空
- 密码不能为空
user.rb:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :profile_name
validates :first_name, :last_name, :email, :profile_name, :password, presence: true
validates :profile_name, uniqueness: true,
format: {
with: /^[a-zA-Z0-9_-]+$/
}
has_many :posts
def full_name
first_name + " " + last_name
end
end
注册/ new.html.erb:
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="formGroupLeft">
<%= f.input :first_name, :input_html => { :class => 'formGroupInput'} %>
</div>
<div class="formGroupRight">
<%= f.input :last_name, :input_html => { :class => 'formGroupInput'} %>
</div>
<div class="formGroupLeft">
<%= f.input :email, :input_html => { :class => 'formGroupInput'} %>
</div>
<div class="formGroupRight">
<%= f.input :profile_name, :input_html => { :class => 'formGroupInput'} %>
</div>
<div class="formGroupLeft">
<%= f.input :password, :input_html => { :class => 'formGroupInput'} %>
</div>
<div class="formGroupRight">
<%= f.input :password_confirmation, :input_html => { :class => 'formGroupInput'} %>
</div>
<div class="formActions">
<%= f.button :submit, "Sign Up" %>
</div>
<% end %>
为什么会这样?我该如何尝试解决它?
答案 0 :(得分:37)
看起来你已经指定了设计有效的插件which adds email/password validations.
class User
devise :database_authenticatable, ... :validatable
end
由于您指定了自己的验证,我将省略设计验证插件。