我使用simple_form进行设计用户注册,我面临两个问题:
如果我不添加'@或'。在电子邮件中,当我按下注册时,验证消息会闪烁,以符合电子邮件格式,并且在提供此验证消息时,URL仍为/ user / signup。
但是对于其他字段 - 密码和用户名,其中有长度验证消息,它不会显示相同的消息,以符合4 ... 20个字符之间的用户名或密码长度。此外,url更改为/ users,因为仍未创建用户,因此如果我从浏览器重新加载该URL,则会出现500错误。
我应该怎样做才能显示验证消息但是网址没有更改?感谢。
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.error_notification %>
<div class="panel-body">
<%= f.input :email, required: '*', autofocus: true, label: false, placeholder: 'Email', input_html: { class: 'input-md form-control' } %>
<%= f.input :username, required: true, label: false, placeholder: 'User Name', input_html: { class: 'input-md form-control' } %>
<%= f.input :password, required: true, label: false, placeholder: 'Password', input_html: { class: 'input-md form-control' } %>
<%= f.button :submit, "Sign-Up" %>
</div>
<% end %>
自定义设计注册控制器:
class MyDevise::RegistrationsController < Devise::RegistrationsController
def create
super
if !User.exists?(email: resource.email)
#to validate form before creating user
resource.valid? #first check if validation is successful
resource.errors.messages.except!(:password) #remove password from errors
if resource.save
redirect_to root_path, alert: "new user created"
else
#render root_path, alert: "There's a problem saving your profile to the Database!"
end
end
end
端
注册控制器代码resource.valid?
必须验证,并且只有在goto保存之后才能验证但是它没有验证...为什么?因此,流程来保存,我要评论“其他”部分,否则它不会显示任何验证消息。但不推荐评论'resource.save'的其他部分。