例えばこれは簡単なToDoアプリですが、新規追加画面でバリデーションをかけて空欄、または5文字以上入力しないと登録できないようにします。
バリデーションとはデータ内容に一定の制限をかけることです。空のデータを登録できないようにする、パスワード入力において文字数制限をかけるなどです。
バリデーションの記述はappディレクトリのmodelsにあるファイルに記述します。
class Task < ApplicationRecord
validates :title,
presence: { message: 'タイトルを入力してください'},
length: { minimum: 5, message: '5文字以上入力してください'}
end
validates :title,
でtitleカラムにバリデーションをかけるという意味
presence
で空のデータは登録できないという意味{ message: 'タイトルを入力してください'},
でエラーメッセージが表示されます。
length: { minimum: 5, message: '5文字以上入力してください'}
で5文字以下の場合はエラーメッセージが表示されるようになります。
続いてviewファイルの記述
<p>
<%= f.label :title %> <br>
<%= f.text_field :title %>
<% if @task.errors.any? %>
<%= @task.errors.messages[:title][0] %>
<% end %>
</p>
<p>
<%= f.submit%>
</p>
入力欄text_fieldの下にエラーメッセージを出力させます。
<% if @task.errors.any? %> <%= @task.errors.messages[:title][0] %> <% end %>
@taskモデルにエラーがあった時エラーメッセージを表示させる記述になります。
入力が空の場合
5文字未満の場合