首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ruby On rails表单验证

在Ruby on Rails中,表单验证是通过Active Record模型来实现的。以下是一些常见的表单验证方法和示例:

基本验证方法

  1. ** presence: true**
    • 确保字段不为空。

    class User < ApplicationRecord validates :name, presence: true end

  2. length: { minimum: 3, maximum: 50 }
    • 确保字段长度在指定范围内。

    class User < ApplicationRecord validates :name, length: { minimum: 3, maximum: 50 } end

  3. format: { with: /regex/, message: "must be in the format xxx" }
    • 使用正则表达式验证字段格式。

    class User < ApplicationRecord validates :email, format: { with: /\A[^@\s]+@[^@\s]+\z/, message: "must be a valid email address" } end

  4. numericality: { greater_than: 0 }
    • 验证字段是否为数字,并且大于指定值。

    class Product < ApplicationRecord validates :price, numericality: { greater_than: 0 } end

  5. inclusion: { in: %w(small medium large) }
    • 验证字段值是否在指定列表中。

    class Order < ApplicationRecord validates :size, inclusion: { in: %w(small medium large) } end

  6. uniqueness: true
    • 确保字段值在整个表中唯一。

    class User < ApplicationRecord validates :email, uniqueness: true end

自定义验证方法

你还可以创建自定义验证方法来满足特定需求。

代码语言:javascript
复制
class User < ApplicationRecord
  validate :name_is_acceptable

  private

  def name_is_acceptable
    if name.blank? || name.include?('admin')
      errors.add(:name, 'is not acceptable')
    end
  end
end

显示验证错误信息

在视图中显示验证错误信息通常使用 @user.errors.full_messages

代码语言:javascript
复制
<% if @user.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
    <ul>
      <% @user.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
    </ul>
  </div>
<% end %>

示例表单

以下是一个简单的表单示例,使用 Rails 的 form_with 助手。

代码语言:javascript
复制
<%= form_with(model: @user, local: true) do |form| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
      <ul>
        <% @user.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :name %>
    <%= form.text_field :name %>
  </div>

  <div class="field">
    <%= form.label :email %>
    <%= form.email_field :email %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

通过这些方法,你可以在 Ruby on Rails 中轻松实现表单验证。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券