要添加到sixty4bit
的答案(我upvoted),你應該把你的驗證到Rails的後端,只處理JS的響應。
Convention over configuration要求您儘可能多地使用內置的框架功能;當你開始通過JQuery配置驗證等時,你最終會得到遍佈整個地方的代碼,這往往會導致大量的代碼(重複代碼等)。
Rails的驗證系統非常好 - 您可以通過您的控制器發送任何一組參數,模型將接受/拒絕取決於數據是否符合驗證。
因此,我肯定會建議在您的模型中加入validator
;我會做到這一點稍有不同sixty4bit
的回答(you can use strings with if
/unless
):
#app/models/model.rb
class Model < ActiveRecord::Base
validates :state, inclusion: { in: %w(usa canada),
message: "%{value} is not a valid state" }, unless: "state.blank?"
end
-
它似乎像模型驗證,併爲箱體
的呈現視圖
除了模型驗證(僅針對params),您需要某種前端機制來處理選擇框的空白。
這可以相對簡單地完成:
#app/assets/javascripts/application.js
$(document).on("change", "select#state", function(e) {
if ($(this).val() != "USA") || ($(this).val() != "Canada") {
$(this).attr("disabled", true);
}
});
您可以處理與jQuery和ActiveRecord的驗證的組合。對於jQuery,您希望在國家/地區使用監聽器,並根據所選內容顯示/隱藏狀態。在模型中,驗證可以是有條件的。如果國家是美國,它可能需要國家的存在。 –