Railsの検証エラーメッセージを個別に取得し、かつ、そのメッセージのスタイリングをBootstrapで赤文字にして表示させたいです。
前提:
1. Bootstrap導入済み
2. ビュー層はslimで書いている
3. Taskモデルを作成済み(属性は:nameと:descriptionをもっている)
4. 検証は、app/models/task.rbファイルに下記のコードを記述
class Task < ApplicationRecord validates :name, presence: true end
<やりたいこと詳細>
taskアプリのnewアクション(新規登録するアクション)では、フォームの入力画面がビューで出現し、フォームをsubmitするとその情報に基づいてcreateアクションが動いて、データベースに保存されるようになっています。
しかし、フォームの画面で、nameを必須入力とするため、もし空欄のまま、submitされると、エラーが表示されるようにしています。
この時、そのエラーメッセージをnameのtext_filedの下に、赤文字で表示させたいです。
<試したこと>
= form_with model:task, local:true do |f| .form-group = f.label :name = f.text_field :name, class:'form-control is-invalid', id:'task_name' - if task.errors.include?(:name) .invalid-feedback = task.errors.full_messages_for(:name).first .form-group = f.label :description = f.text_area :description, rows:5, class:'form-control', id:'task_description' = f.submit nil, class:'btn btn-primary'
Bootstrapのバリデーションを表示させる時に使うクラスis-invalidと、invalid-feedbackクラスの2つを使って表示させようと試みました。
これらのクラスを使うにあたり、まず親要素のクラスにis-invalidを定義する必要があると説明が書かれていましたので、そのようにclassを追加しました。
次に、エラーメッセージ部分にあたる、task.errors.full_messages_for(:name).firstにinvalid-feedbackクラスを適用させたのですが、文字が表示されません。
下記コードの.invalid-feedbackの部分を削除すると、エラーメッセージは正常に表示されますが、黒文字になってしまい期待通りの結果になりません。
ここからどのようにしたら、エラーメッセージを赤文字にできるでしょうか?
よろしくお願いいたします。
あなたの回答
tips
プレビュー