1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ProgateのRuby on Railsコースで気になった所【エラーメッセージのeach文】

Posted at

プログラミング未経験の初心者ですが、少し前にProgateのRuby on Railsコースを終わりました。

Railsチュートリアルをしながら復習してみると、Progateをやっていた時はあまりピンと来なかったけど、今なら少し理解できることが増えたので、気づいた点をまとめていきたいと思います。
この記事はその2です。
その1はこちら
https://qiita.com/HiMinmeg/items/1e29bf9252096d463f6b

Progateしているけど、ピンと来ていないな、ここ分からないなと思っている方のお役に立てば幸いです。

エラーメッセージのeach文【コースⅤ】

バリデーションをかけて、投稿に対してエラーとなった時(制限文字数以上入力したとか…)投稿すると、エラーメッセージが表示されるようにします。

この時、each文を使う理由が分かっていませんでした。
考えてみると当たり前のことだったのですが、それでも理解できた時嬉しかったので、記録に残したいと思います。

エラーメッセージのeach文は例のような使い方になります。

  <% @post.errors.full_messages.each do |message| %>
      <%= message %>
  <% end %>

errors.full_messagesはエラー内容を配列で取得します。

参考記事 https://qiita.com/ryuuuuuuuuuu/items/1a1e53d062bff774d88a
     Railsガイド 7.バリデーションエラーに対応する
     Railsガイド 8.バリデーションエラーをビューで表示する

ここでポイントなのは、バリデーションを複数かけているとエラー内容で取得する配列も複数あるということです。
なので、each文で配列の中身を一つずつ取り出す必要があります。
エラーが同時に複数発生する可能性はあるので、そこをまったく考えていなかったが為に、どうしてeach文なのだろうと思っていた、ということでした。

まとめ

errors.full_messagesはエラー内容を配列で取得する。
・リデーションを複数かけているとエラー内容で取得する配列も複数あるため、each文で配列の中身を一つずつ取り出す必要がある

ここまで目を通していただきありがとうございます。
間違っている場合、コメントでご指摘ください。
参考になれば嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?