fc2ブログ

2023.08 «  - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 » 2023.10
TOP > railsを初めて動かす04【validation入力項目エラーチェックその1】

 ← railsを初めて動かす05【validation入力項目エラーチェックその2】 | TOP | StringとSymbolの違い

railsを初めて動かす04【validation入力項目エラーチェックその1】 

2007年05月24日 ()
更に、Edit画面での入力値のエラーチェック(validation)も簡単にできるという噂を聞いたので、早速いろいろ調べてみました。

modelを使ってエラーチェックするらしいです。まあ、もちろん違うやり方、たとえばcontrolを使ってエラーチェックをするやり方もたぶんあるんでしょうけど、とにかく、このmodelのエラーチェック機能を使うと超ハヤイ!ことが分かりました。

例えば、DBのBooksテーブルをモデリングする(とかいう怪しい表現を使ってみた)、Bookモデルに、titleの入力を必須にするエラーチェックを付けてみましょう。

# vi myFirst/app/models/book.rb


class Book < ActiveRecord::Base
end



と、最初は空の状態のmodelです。そこに一行だけ加えて

class Book < ActiveRecord::Base
  validates_presence_of :title
end



として、http://localhost:3000/book/edit/1 にアクセスして、編集画面を表示して(1というのは、レコードidのこと)、Titleの欄を空にしてEditボタンをクリックします。

そしたらぁ、あSo-!エラーチェックが動いてエラーメッセージが勝手に表示されたんだぞー。あぁーいとぅいまてーん。

↑流行りが過ぎたら削除するつもり。

ちなみに、:titleを:Titleと大文字に書いても同じ動きをしました。

では次に、Titleを5文字以内で、という条件も追加してみました。

class Book < ActiveRecord::Base
  validates_presence_of :title
  validates_length_of :title, :maximum => 5
end



そして更に更に、Authorも5文字以内で、という条件も追加してみました。

more book.rb
class Book < ActiveRecord::Base
  validates_presence_of :title
  validates_length_of :title, :author, :maximum => 5
end



驚くほど簡単に出来て、もうシビレるワァ。

【広告】

[2007.05.24(Thu) 00:36] Railsを初めて動かすTrackback(0) | Comments(4)
↑TOPへ


COMMENT

エラー時の画面の値について by くまこ
はじめまして。いつも参考にさせていただいてます。

いきなりで大変申し訳ないのですが・・・

validates_presence_of を使って画面の一部のフィールドの入力チェックをしようとしてエラーが発生した場合、
fiel_fieldでファイルのアップロードをするフィールド(入力チェックはしない)だけが
エラー画面で値が消えてしまうのですが
これはもうどうしようもないことなのでしょうか・・・?
file_fieldの値を残したままエラーメッセージを出すことは可能ですか?

普通にだと無理でしょうか by 自分
質問ありがとうございます。
:multipart=>true な感じのフォームでfile_fieldからどういうデータがPOSTされているか調べましたが、ファイルのフルパスは送信されていませんでした。ファイル名だけ送信されているようです。

↓な感じです。

filename="testfile1.txt" Content-Type: text/plain

なので、フルパス付きファイル名をエラー画面で表示させるのはなかなか難しいんじゃないかな、と思います。

勝手な推測ですがAJAX的な画面にすればなんとかうまくいくかもしれませんがね。

ちなみに、ブラウザからどんなHTTPパケットが送受信されているかどうかを調べるのにはhttpfoxが便利ですよ。

ありがとうございます! by くまこ
すごく丁寧な回答をありがとうございました!
とりあえず消えてしまうままで進めてみようと思います(^^;)

httpfoxというアドオンも知らなかったので今後使ってみますね。
いま作っているアプリはfirefoxで動かない部分があってIEで作っているので・・・

またわからないことがあれば質問するかもしれませんが
そのときはどうぞよろしくお願いします。

どういたしまして by 自分
たいしたアドバイスできなくてごめんなさいね。

firefoxのアドオンは強力なものがたくさんですので重宝してます。firebugもそう、ietabもそう。web developerも!!!

また何かあったら遊びに来てください。

コメントを閉じる▲
 ← railsを初めて動かす05【validation入力項目エラーチェックその2】 | TOP | StringとSymbolの違い

COMMENT

はじめまして。いつも参考にさせていただいてます。

いきなりで大変申し訳ないのですが・・・

validates_presence_of を使って画面の一部のフィールドの入力チェックをしようとしてエラーが発生した場合、
fiel_fieldでファイルのアップロードをするフィールド(入力チェックはしない)だけが
エラー画面で値が消えてしまうのですが
これはもうどうしようもないことなのでしょうか・・・?
file_fieldの値を残したままエラーメッセージを出すことは可能ですか?
[ 2009.05.26(Tue) 09:23] URL | くまこ #- | EDIT |

質問ありがとうございます。
:multipart=>true な感じのフォームでfile_fieldからどういうデータがPOSTされているか調べましたが、ファイルのフルパスは送信されていませんでした。ファイル名だけ送信されているようです。

↓な感じです。

filename="testfile1.txt" Content-Type: text/plain

なので、フルパス付きファイル名をエラー画面で表示させるのはなかなか難しいんじゃないかな、と思います。

勝手な推測ですがAJAX的な画面にすればなんとかうまくいくかもしれませんがね。

ちなみに、ブラウザからどんなHTTPパケットが送受信されているかどうかを調べるのにはhttpfoxが便利ですよ。
[ 2009.05.28(Thu) 17:25] URL | 自分 #RaJW5m0Q | EDIT |

すごく丁寧な回答をありがとうございました!
とりあえず消えてしまうままで進めてみようと思います(^^;)

httpfoxというアドオンも知らなかったので今後使ってみますね。
いま作っているアプリはfirefoxで動かない部分があってIEで作っているので・・・

またわからないことがあれば質問するかもしれませんが
そのときはどうぞよろしくお願いします。
[ 2009.06.03(Wed) 18:37] URL | くまこ #- | EDIT |

たいしたアドバイスできなくてごめんなさいね。

firefoxのアドオンは強力なものがたくさんですので重宝してます。firebugもそう、ietabもそう。web developerも!!!

また何かあったら遊びに来てください。
[ 2009.06.05(Fri) 00:19] URL | 自分 #RaJW5m0Q | EDIT |

COMMENT POST















管理者にだけ表示

 ← railsを初めて動かす05【validation入力項目エラーチェックその2】 | TOP | StringとSymbolの違い