0

我的 Rails 验证需要一些帮助。如果另一个字段具有特定值,我需要验证一个字段是否已填写。代码如下。

如果选择了扩展许可证,则需要填写扩展许可证类型。它不起作用,当我填写表格并选择扩展并且不检查任何扩展许可证类型时,它验证正常并且我没有收到错误消息。

许可证字段是一个下拉菜单,extended_license_type 是一组复选框。

  validates :license, presence: true
  validates :extended_license_type, presence: true, :if => :license_extended?

private
    def license_extended?
      license == 'extended'
    end

这是我的表单复选框。也许我的问题是他们而不是验证。任何帮助将不胜感激。

    <%= f.check_box :extended_license_type, {}, "ur" %>
    <%= f.label :extended_license_type, "Unlimited Reproduction" %>
    <%= f.check_box :extended_license_type, {}, "ms" %>
    <%= f.label :extended_license_type, "Multi-User/Seat" %>
    <%= f.check_box :extended_license_type, {}, "pr" %>
    <%= f.label :extended_license_type, "Product for Resale" %>
    <%= f.check_box :extended_license_type, {}, "ers" %>
    <%= f.label :extended_license_type, "Product for Electronic Resale" %>
    <%= f.check_box :extended_license_type, {}, "ed" %>
    <%= f.label :extended_license_type, "Product for Electronic Distribution" %>
    <%= f.check_box :extended_license_type, {}, "ep" %>
    <%= f.label :extended_license_type, "Extended Legal Protection" %>

这是我的许可证字段下拉列表。

<%= f.select :license, [["Standard", "standard"], ["Extended", "extended"]] %>
4

3 回答 3

1

验证工作得很好。它为extended_license_type 传递了'0',并且验证了因为我只是检查该字段的存在。

于 2013-01-03T23:42:33.433 回答
0

我想colon在许可证之前添加一个private

private
    def license_extended?
      :license == 'extended'
    end

validates_presence_of :extended_license_type, :if => :license_extended?

(或者)

validates :extended_license_type, :presence => true, :if => :license?
于 2013-01-03T17:29:37.243 回答
0

尝试

validates_presence_of :extended_license_type, :if => :license_extended?
于 2013-01-03T16:59:40.543 回答