我有一個軌道模型,有兩個字段屬性::commission_fixed
& :commission_percentage
。用戶應該只能選擇以下兩個選項之一::commission_fixed
或:commission_percentage
不能同時在表單提交。這可能使用Rails驗證?如果是這樣的話,最好的辦法是什麼?有條件的軌道窗體驗證
0
A
回答
0
您的問題在於您構建了列名稱/模型屬性的方式。
理想情況下,您應該將模型上的屬性名稱更改爲:commission_method
和:commission_rate
。這允許更大的靈活性。然後在您的視圖中,您可以使用單選按鈕實現您要查找的內容。您可以將:commission_rate
作爲小數點存儲在數據庫中。
<%= f.radio_button :commission_method, "Fixed" %>
<%= f.radio_button :commission_method, "Percentage" %>
<%= f.number_field :commission_rate %>
在視圖文件,如果你需要顯示一個固定的量和比例,你可以切換隻是做:
<% case @sales_associate.commission_method %>
<% when 'Fixed' %>
<span>Fixed: <%= number_to_currency(@sales_associate.commission_rate) %></span>
<% when 'Percentage' %>
<span>Percentage: <%= "% #{@sales_associate.commission_rate}" %></span>
<% end %>
但是,「可能」寫的是拋出一個自定義的驗證方法如果兩個屬性都已分配,則會出錯
在任何型號:
class SalesAssociate
validate :only_one_selected_commission
def only_one_selected_commission
errors[:base] << "Please select only one form of commission" if self.commission_fixed.present? && self.commission_percentage.present?
end
end
+0
謝謝你這樣一個美好的,充分知情和清晰的答案。我明白你的意思與列名/模型屬性,我會重寫這個來反映你的答案。歡呼 – 2014-10-31 00:11:31
+0
很高興提供幫助。乾杯 – 2014-10-31 00:52:52
相關問題
- 1. 驗證軌道
- 2. 有條件的軌道
- 3. 軌道重構,有條件
- 4. 使用驗證軌道中存在的條件
- 5. 窗體驗證?
- 6. 無條件觸發軌/ active_record有條件驗證
- 7. Symfony窗體文件驗證
- 8. 後端驗證軌道
- 9. 軌道4枚舉驗證
- 10. 軌道驗證錯誤
- 11. 軌道3驗證模型
- 12. 關於軌道驗證4
- 13. 自定義驗證軌道
- 14. 有條件驗證
- 15. jQuery的驗證插件沒有顯示在軌道
- 16. WPF窗體驗證
- 17. Rails窗體驗證
- 18. javascript窗體驗證?
- 19. MVC窗體驗證
- 20. 。窗體驗證javascript
- 21. 有軌道移動的條件約束
- 22. jquery的有條件驗證
- 23. 有條件的Bean驗證
- 24. 驗證沒有javascript的窗體
- 25. select2與嵌套窗體的軌道
- 26. 拒絕軌道上的具體數字(0)3數字驗證
- 27. 窗體上的電子郵件驗證
- 28. 軌道上的紅寶石has_many驗證
- 29. 軌道上的紅寶石URL驗證
- 30. 在has_many屬性上的軌道驗證
保持一個下拉菜單或選擇選項,是什麼阻止你。您可以使用jquery停止單選按鈕上的多項選擇。 – 2014-10-30 06:14:09
@CaffeineCoder我們怎樣才能使兩個屬性的選擇框,這是可能的AFAIK我們可以發送選項作爲選擇框單一屬性 – anusha 2014-10-30 06:15:27
感謝您的答覆。我知道我可以通過這種方式來實現,我的問題更多是出於好奇,如果可以純粹通過使用Rails驗證來實現。 – 2014-10-30 06:17:18