我正在尝试验证不同的输入值。 例如“域名”和“电子邮件”。两者都必须具有价值并且必须是唯一的。所以我尝试用
来验证它们validates :domain,
:presence => true,
:uniqueness => { :case_sensitive => true }
validates :email,
:presence => true,
:uniqueness => { :case_sensitive => true }
但是当我显示flash消息时,我得到四个错误:
["Domain can't be blank", "Domain has already been taken", "Email can't be blank", "Email has already been taken"]
有可能逐渐检查它们吗?如果输入字段没有值,则用户获取
["Domain can't be blank"]
但如果输入字段具有值且不唯一,则用户获取
["Domain has already been taken"]
我该如何实施呢?
修改
下面是打印错误消息的代码:
<% [:error].each do |key| %>
<% if flash[key] %>
<div class="<%= key %>" id="flash">
<%= flash[key] %>
</div>
<% end %>
<% end %>
这里是创建错误的控制器:
def create
respond_to do |format|
# save form data
@login = Login.new(params[:login])
# if validation fails, throw error messages
if !@login.save
flash[:error] = @login.errors.to_a
end
# redirect to landingpage
format.html { redirect_to :root }
end
end
答案 0 :(得分:2)
flash[:error]
或@user.valid?
, @user.invalid?
将显示所有错误,然后会返回与该@person
对象相关的错误。
请参阅Rails指南,了解如何使用Flash。 还有validation errors部分。
尝试一下:
if !@login.save
flash[:error] = @login.errors.to_a if @login.invalid?
end