我已经为我的注册页面添加了验证,但是当我加载注册页面时 出现错误。单击“提交”按钮后应显示错误 我需要做什么?
我的注册页面
<% if !flash[:notice].blank? %>
<div class="notice">
<%= flash[:notice] %>
</div>
<% end %>
<%= form_for @user,validate: true do |f| %>
<% if !@user.valid? %>
<% if @user.errors.any? %>
<ul class="Signup_Errors">
<% for message_error in @user.errors.full_messages %>
<li>* <%= message_error %></li>
<% end %>
</ul>
<% end %>
<% end %>
<%= f.label("Name:") %>
<%= f.text_field(:user_name, class: "form-control") %></br>
<%= f.label("Email Address:") %>
<%= f.text_field(:email_id, class: "form-control") %></br>
<%= f.label("Password:") %>
<%= f.password_field(:password, class: "form-control") %></br>
<%= f.label("Confirm Password:") %>
<%= f.password_field(:password_confirmation, class: "form-control") %></br>
<%= f.submit("Register",class: "btn btn-primary") %>
<a class="btn btn-primary" style="margin-left:20px" href="/login" >Login</a>
<% end %>
我的模型,其中包含了我的验证
User.rb
class User < ApplicationRecord
has_many :reviews
has_secure_password
EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validates :user_name, :presence => true, :on => :create, :uniqueness => true, :length => { :in => 3..20 }
validates :email_id, :presence => true, :on => :create, :uniqueness => true, :format => EMAIL_REGEX
validates :password, :presence => true, :on => :create, :confirmation => true #password_confirmation attr
validates :password_confirmation, :presence => true
end
控制器
def new
puts "****Inside New Method******"
@user = User.new
end
def create
puts "****Inside create Method******"
@user = User.new(user_params)
puts @user.user_name
if @user.save
puts "** USER DETAILS SAVED SUCCESSFULLY****"
flash[:notice] = "Registration successful, please login"
flash[:color] = "valid";
redirect_to "/login"
else
flash[:notice] = "Invalid Form"
flash[:color] = "invalid"
end
end
加载页面时,单击“提交”按钮之前会出现“错误” 我已经包括:on =&gt; :创造,但它不起作用
请帮助!!
答案 0 :(得分:0)
if !@user.valid?
可能会导致此问题。这不是必要的,因为您只是在保存记录之前检查记录在控制器中是否有效。
如果无法保存记录,您还应该添加render :new
,否则会出现错误视图错误。
答案 1 :(得分:0)
打开rails控制台并尝试手动创建用户。是创造与否?
例如:
user = User.new(username: "test", email_id: "test@test.com", password: ...)
并使用
检查验证user.valid!
如果验证失败,您将收到错误消息。如果没有错误则保存
user.save!