Rails设计simple_form进行注册在保存之前不验证

时间:2017-09-12 12:34:28

标签: ruby-on-rails-4 devise simple-form

我使用simple_form进行设计用户注册,我面临两个问题:

问题1:

如果我不添加'@或'。在电子邮件中,当我按下注册时,验证消息会闪烁,以符合电子邮件格式,并且在提供此验证消息时,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

问题2:

注册控制器代码resource.valid?必须验证,并且只有在goto保存之后才能验证但是它没有验证...为什么?因此,流程来保存,我要评论“其他”部分,否则它不会显示任何验证消息。但不推荐评论'resource.save'的其他部分。

0 个答案:

没有答案