我有一個軌道模型,有兩個字段屬性::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. 軌道4枚舉驗證
- 3. 軌道3驗證模型
- 4. 關於軌道驗證4
- 5. 有條件驗證
- 6. 有軌道移動的條件約束
- 7. Rails窗體驗證
- 8. jquery的有條件驗證
- 9. 拒絕軌道上的具體數字(0)3數字驗證
- 10. 窗體上的電子郵件驗證
- 11. 複雜的軌道模型驗證
- 12. 軌道上的紅寶石URL驗證
- 13. 在has_many屬性上的軌道驗證
- 14. 平靜的軌道模型驗證
- 15. 軌道上的紅寶石has_many驗證
- 16. 窗體上的驗證
- 17. 重新設置窗體以進行新的驗證,導軌3.1
- 18. jQuery的驗證插件和ASP.NET驗證器Web窗體
- 19. 有條件驗證ASP.NET
- 20. angular2 formarray有條件驗證
- 21. ext.data.record有條件驗證
- 22. formencode有條件驗證
- 23. 驗證輸入文本軌道
- 24. 軌道模型驗證優先嗎?
- 25. 在軌道上驗證搜索表單
- 26. 在邀請軌道上跳過驗證
- 27. 軌道4驗證嵌套創建
- 28. 驗證使用「fb_graph」 1.9.2在軌道上
- 29. Xamarin窗體 - Windows驗證webapi
- 30. ASP窗體身份驗證
保持一個下拉菜單或選擇選項,是什麼阻止你。您可以使用jquery停止單選按鈕上的多項選擇。 – 2014-10-30 06:14:09
@CaffeineCoder我們怎樣才能使兩個屬性的選擇框,這是可能的AFAIK我們可以發送選項作爲選擇框單一屬性 – anusha 2014-10-30 06:15:27
感謝您的答覆。我知道我可以通過這種方式來實現,我的問題更多是出於好奇,如果可以純粹通過使用Rails驗證來實現。 – 2014-10-30 06:17:18