Rya*_*ran 2 validation ruby-on-rails-5
我想将多个条件添加为有效,但我只想查看一条摘要错误消息。
validates :floor, presence: true, numericality: { only_integer: true }, length: { maximum: 2 }
Run Code Online (Sandbox Code Playgroud)
如何在出现任何错误时仅显示一条消息,例如:“需要楼层,必须是数字...”
另外,当我使用时:
if @posts.valid?
@posts.save
redirect_to room_path
else
render :new
end
Run Code Online (Sandbox Code Playgroud)
浏览器将使用消息呈现 new,但 url 是http://localhost:3000/posts,它不是http://localhost:3000/posts/new这是一个问题,当用户刷新页面 => 它将返回索引页面(不是新一页)。我该如何修复它?
您可以编写自定义验证器:
validate :validate_floor
private
def validate_floor
return if floor.present? && floor.scan(/\D/).empty? && floor.length <= 2
errors.add(:floor, 'Floor is required, must be number...')
end
Run Code Online (Sandbox Code Playgroud)
其他问题;
当您发布表单后,请求就会create生效。由于该create操作,路径被重定向到http://localhost:3000/posts。当表单出现错误时,表单将重新呈现render :new。但 url 不会改变,因为没有重定向。其实这里并没有错误。这是应该的。