0
A
回答
0
由於在模型中設置的驗證是服務器端,所以在您提交表單之前,您將不會收到Flash消息。正如其他人所建議的那樣,使用AJAX可能會有這種做法,但是您可以使用JavaScript來監視表單的元素並創建自己的Flash消息以在客戶端進行驗證。
HTML5引入了新的輸入屬性,如required
和pattern
,您也可以使用它來驗證在input
元素中設置的值。
EG <input type="text" name="firstname" required />
如果有人試圖提交表單沒有把一個價值在名字輸入一個小錯誤信息會顯示出來。這裏沒有辛苦的工作,很好。
模式屬性將任何正則表達式作爲值,因此您可以根據自己喜歡的具體值來確定值的具體含義。
EG <input type="text" name="firstname" pattern="^[A-Z]{1}[a-z]{1,20}$" />
這將只允許以一個大寫字母開頭的1-20字母的單詞,並提交如果沒有顯示錯誤消息。 (不提供服務器請求)。
我喜歡HTML 5以外的其他功能,並且是進行客戶端驗證的好方法。在您的模型中進行服務器端驗證是最重要的,因爲任何客戶端驗證都可以通過訪問者在瀏覽器中關閉JavaScript或編輯頁面源來避免。
您可以使用CSS以不同的方式使用這些新屬性來設置輸入框的樣式。
EG input:required:invalid { border: 1px solid red; }
您需要了解的Rails的非侵入式JavaScript。 http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html – bodyfarmer
您是否嘗試過使用[Rails with AJAX](http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html)? – tadman
我現在就在這裏,謝謝:) – Startsp