2013-01-03 40 views
0

我需要一些幫助來驗證我的Rails。如果其他字段具有特定值,我需要驗證一個字段是否已填寫。代碼如下。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"]] %> 
+0

我注意到它傳回了'0'爲extended_license_type,所以我的驗證正在工作。我需要使驗證檢查它不是'0' – covard

回答

1

將只會驗證正在強制很好。它傳遞'0'爲extended_license_type並驗證,因爲我只是檢查該字段的存在。

0

嘗試

validates_presence_of :extended_license_type, :if => :license_extended? 
0

我猜private許可證前添加colon

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

validates_presence_of :extended_license_type, :if => :license_extended? 

(或)

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