【问题标题】:Skip validation on certain field when a condition is met满足条件时跳过特定字段的验证
【发布时间】:2015-03-07 01:28:48
【问题描述】:

您好,我在尝试执行以下操作时遇到了麻烦。

我正在制作结帐页面,我有这样的表格

  <%= form_for([@ofert, @order], builder: FoundationFormBuilder) do |f| %>

    <%= f.fields_for :invoice_address do |builder| %>
        <%= render partial: 'invoice_address_fields', locals: { f: builder } %>
    <% end %>

    <%= f.check_box :invoice_equals_shipping, checked: true, label: 'My Invoice address is the same Shipping address' %>

    <%= f.fields_for :shipping_address do |builder| %>
      <%= render partial: 'shipping_address_fields', locals: { f: builder } %>
    <% end %>

    .....
    <% end %>

默认选中“我的发票地址与发货地址相同”复选框,默认情况下使用 jquery 隐藏“发货地址”字段。

这两个字段一开始都是空的,所以用户通常会填写 invoice_address 字段并勾选“我的发票地址是相同的送货地址”复选框,问题是隐藏字段“shipping_address”是验证“字段不能为空”

如何验证选中复选框时不验证字段?

【问题讨论】:

    标签: jquery ruby-on-rails ruby forms validation


    【解决方案1】:

    您可以在模型中向validates 添加条件。比如:

    validates :shipping_address, presence: true, unless: :invoice_equals_shipping?
    

    【讨论】:

    • 你摇滚!非常感谢我刚刚在我的订单模型中添加了你的行,因为 :shipping_address 是一个嵌套属性。对于那些想要进行更多自定义验证的人,请参考edgeguides.rubyonrails.org/…。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多