2012-04-16 111 views
1

我在我的Rails 3應用程序中寫了一些表單視圖,我想知道其他人可能會以乾的方式驗證前端和後端上的表單。僅僅依靠後端驗證來驗證前端的表單是否瘋狂?

當然,如果沒有rails驗證,似乎沒有辦法繞過驗證後端。知道這一點,在前端編寫相同的驗證似乎不太乾。我已經閱讀了一些關於在兩個地方編寫驗證的其他線索,但除非有很好的理由這樣做,否則我寧願不這樣做。

瞭解軌道的魔力,可能有一種簡單而簡單的方法來以幹線方式驗證前端和後端,但我還沒有發現它。也許是驗證寶石?

所以我想在我的用戶模型上調用驗證方法的前端使用ajax會很好。例如,客戶端上的我的用戶名字段監聽jquery按鍵,然後將字段內容發送到名爲'checkuser'的用戶控制器方法(或類似的東西)。考慮到每個模型有5個或更多字段,我可能會在控制器中添加很多額外的字段檢查方法......太難看了嗎?

這樣做會有什麼需要注意的嗎?我真的應該關心那些禁用JavaScript嗎?

回答

1

我會回答這個問題,而來自ASP.NET的背景。所以如果有的話,請原諒一些錯誤。

在ASP.NET中,有一個DataAnnotation概念,簡而言之,就是這樣:對於每個經過驗證的類,元數據都是按照「Required」或「MinLength(8)」等屬性指定的。這提供了DRY驗證 - 在客戶端上,它們自動映射到jquery函數,並在服務器上由運行時使用。

順便說一句,在大多數情況下驗證雙方都是必須的,因爲這樣可以防止過多的服務器負載(在客戶端進行驗證時)並防止在數據庫中插入錯誤的數據(在服務器端進行驗證時)。

簡單的谷歌搜索似乎存在類似的方法在這個so post所述的軌道。

+0

是的,我認爲你是對的,保持客戶端請求可能是足夠的理由在客戶端上覆制代碼。 – botbot 2012-04-16 07:40:43