LoginSignup
2
4

More than 3 years have passed since last update.

deviseのエラーメッセージ表示でビュー崩れ 対処法

Last updated at Posted at 2020-05-02
はじめに

チーム開発でフリマアプリを模したものを開発しています。deviseのエラーメッセージ表示によるビュー崩れがあり、修正対応に少しハマったので、簡単ですが対処法を残しておきます。

環境
rails (5.2.4.2)
devise (>= 4.7.1)
devise-i18n (1.9.1)
devise-i18n-views (0.3.7)

■ユーザー登録画面 初期状態です
20db8873e7b232ed634cde2d713668a2.png

■ユーザー登録に必要な項目の入力漏れがあると下図のようにエラーメッセージが表示されます。
(deviseの標準機能です。デフォルトが英語なので、日本語化する為にdevise-i18nというgemを導入しています)
ビューの縦方向のずれは、これらの要素を包んでいる親要素にheight:autoをかければ対応できます。
3aa59123f01cb330ced59a610248d69b.png

deviseのエラーメッセージ表示でビュー崩れ発生

問題は次です。
ユーザー登録画面の下部に移ります。

■ユーザー登録画面 初期状態です
3bf7cbbd68d2098532ef725afe1feb43.png

■deviseエラーメッセージ表示時の、ページ下部の様子です。生年月日のビューが崩れていますね。。
419d80f9005e5a68e36203729b670db0.png

エラーメッセージ表示有無によって何が違うのでしょうか。
検証ツールをよく見ると、エラーメッセージ表示時に

<div class="field_with_errors">

というdiv要素が自動的に生成されていますね。(!)

エラーメッセージ表示前のビューをいくら整えても、表示後のビューを確認してびっくり。
さっき直したはずなんだけどなんで崩れてるんだろう、、、ってなります。

対処法

上記のdiv要素が自動生成されてしまうのは仕方ないので、この要素に対してCSSでdisplay: contentsをかけてあげましょう。
(他の対処法パターンについては確認しきれていません)

参考にさせていただいた記事

所感

deviseはこういった細かい設定まで作り込まれているので、うまく使いこなすためにも、特性を理解して仲良くしていきたいと思います。。

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