2007年07月27日

rails:バリデーション

Model
#あらかじめ用意されているバリデーションなら、フィールド名を指定してやるだけでよい

class Article < ActiveRecord::Base
validates_presence_of :title, :body #Not Null
end


Controller

def create
@article = Article.new
end

def execute
@article = params[:article] #インスタンス変数を使う。エラー時に戻るときインスタンス変数でないとエラーが表示されないため

unless @article.valid? #バリデーションチェック
   #バリデーションエラー時には戻る
return render(:action => 'create')
  
end
#以降の処理
end


View
create.rhtml


<%= form_tag( :action=> "create_article") %>
<%= error_messages_for 'article' %> #指定したオブジェクトすべてのエラー表示
<table>
<tr>
<th>タイトル</th>
<td><%= text_field('article','title') %> #入力フィールド
<br /><%= error_message_on 'article','title' %> #このフィールドに対するエラーメッセー表示
</td>
</tr>
</table>
<%= submit_tag '投稿' %>
<%= end_form_tag %>


エラーメッセージにはclass属性が指定されているので、scaffoldで作成したスタイルシートを読み込ませるなどするとそれなりの表示になる。
ラベル:Rails
posted by sistailsnow at 08:18| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。