Go Revel Validation
models内のValidation関数の変数名
func (hotel Hotel) Validate(v *revel.Validation) {
controllers内のリクエスト受け取りの変数
func (c Hotels) ConfirmBooking(id int, hotel models.Hotel) revel.Result { hotel.Validate(c.Validation) if c.Validation.HasErrors() { c.Validation.Keep() c.FlashParams() return c.Redirect(routes.Hotels.Book(id)) }
HTML中の変数
{{.hotel}}
は、変数名(この例ではhotel)が一致してないと、エラー表示してくれない。
ダックタイピング(ポリモーフィズム)してるっしょとか、期待しちゃ駄目らしぃ。
注意:エラーチェックはかかるけど、エラーの表示がアレになる。
更に・・・。
エラーメッセージは、(英語でもある程度わかるものだが)「使えねぇ」。
i18n対応だからmessage.jaとか用意したら良いのだろうが・・・今はそんな気分じゃねぇ。
それに、メッセージの内容が以下なので、期待できないと思うのは仕方ないように思えるが、どうなんでしょ。
[Required Must match ^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$]
ちなみに、「未入力」と「電話番号」チェックですが、文章は自分たちで(ry
こんなの簡単に表示してくれるRails様スゲ━━━━━━ヽ(゚Д゚)ノ━━━━━━!!!!
まだ調べてないけど、メッセージをきれいにするには、チュートリアルよろしく
v.Required(hotel.Address).Message("住所が未入力です。") v.Match(hotel.Tel, RegTelNum).Message("電話番号が変です。") if hotel.Fax != "" { v.Match(hotel.Fax, RegTelNum).Message("FAX番号が変です。") }
日本語OK。
ここに、書いておくと「未入力OKフィールド」であってもチェックされる。
なので、未入力を許すフィールドでチェックをするならIF分で値が有る場合としないといけない(ようである)。
Railsの基本理念は「同じことを繰り返さない」(DRY:Don't Repeat Yourself)と「設定より規約」(CoC:Convention over Configuration)である。
Revelは、まだ・・・いや、言うまい。ワシはまだにわかだから。