LoginSignup
4
8

More than 5 years have passed since last update.

【rails】エラー文をビューの任意の位置に配置できる、 errors.full_messagesの使い方

Last updated at Posted at 2017-05-10

ビューの任意の位置にエラー文を表示できる

errors.full_messagesはhamlやerbの中に配置することができるので、エラー文を自由に配置することができます。controllerから指定するflashメッセージと比較して、自由度高く使うことができます。

ほとんど以下のサイトを参考にさせていただいています。
その上で自分が次に使いやすいようにしています。
日本語化の方法ものっているので、気になる方はぜひ↓
http://ruby-rails.hatenadiary.com/entry/20140810/1407623400

エラー文が表示されるまでの流れ 

MVC全てに記述

0.(ビューでエラーになる内容をフォームに入力)

1.モデルでエラーを感知して

2.コントローラで同じページを表示するように

3.ビューでエラー文の位置を指定

記事でもこの順番で書いていきます。

具体的にどう書けばいいか。

まず、モデルでエラーを検知しないとダメですね。
バリデーションの記述をモデルにします↓

hoge.rb
class Hoge < ApplicationRecord
  validates :fuga, uniqueness: true, presence: true
end

コントローラではエラー文にはredirect_toではなくrenderを使います↓
redirect_toでは再読み込みになり、errors.full_messagesのエラー文は表示されません。
(成功の場合はflashメッセージを使っています。)

hoge_controller.rb
def create
  @hoge = Hoge.find(params[:id])
  if @chatgroup.save
    redirect_to root_path, notice: "グループ作成完了!"
  else
    render :new
  end
end

ビューでは表示したい場所に、こんな感じで書けば大丈夫です。↓

hoge.haml
.hoge-form__errors
  - if @hoge.errors.any?
    %ul
      -@hoge.errors.full_messages.each do |message|
        %li
          =message

画像の中の赤文字の部分がerrors.full_messagesの表示です↓

スクリーンショット 2017-05-13 午後6.26.47.png

不足点や修正点ありましたらご指摘いただけると嬉しいです。

4
8
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
4
8