2014年7月14日月曜日

validationのエラー内容を表示する

%h1 Add New
= form_for @project do |f|
  %p
    = f.label :title
    %br
    = f.text_field :title
    - if @project.errors.any?
      = @project.errors.inspect
  %p
    = f.submit
 例えばこんな感じで、.errors.inspectとすると、エラーの内容を確認することができる。ドットインストールでやってた。
#<ActiveModel::Errors:0x007fd1635c5b48 @base=#<Project id: nil, title: "", created_at: nil, updated_at: nil>, @messages={:title=>["can't be blank"]}>
で、こんなエラーが出たので、@messagesの内容を拾ってもっともらしいエラーを表示させよう、と。
      = @project.errors.messages[:title][0] 
:titleの0番目の要素なのでこんな書き方をするみたいだけど、[0]を外してみたら["can't be blank"] と表示された。よくわからない。

 ちなみに、独自のエラーメッセージを表示させる場合には、モデル/app/models内に書くことで可能。
class Project < ActiveRecord::Base
validates :title,
 presence: { message: '空はダメ!' },
 length: { minimum: 3, message: '短い!'}
end
 あ、すんません。hamlで書いてます。

0 件のコメント:

コメントを投稿