Rails に組み込まれているサーバー側の検証を使用する場合は、検証エラーが存在するかどうかを確認し、存在する場合はそれらを出力できます。
<%= form_for(:session, :url => sessions_path) do |f| %>
<%= f.label :email, 'Username'%>
<%= f.text_field :email %>
<% if f.object.errors[:email] %>
<%= f.object.errors[:email].join(", ") %>
<% end %>
<%= f.label :password %>
<%= f.password_field :password %>
<% if f.object.errors[:password] %>
<%= f.object.errors[:password].join(", ") %>
<% end %>
<%= f.submit 'Login'%>
<%= link_to 'Forgot Your Password?', new_password_reset_path >
<% end %>
いくつかのことに注意してください。
まず、フォーム内のオブジェクトではなくシンボルを渡すため、を呼び出してブロック内からオブジェクトの属性にアクセスする必要があります。form_for
f.object
次に、フィールドによっては複数の検証エラーが発生する可能性があるため、それらを順番に出力する必要があります。Ruby のjoin
方法を使用すると、これらを一貫した方法で連結するのに役立ちます。
更新:
エラーを対応するテキスト フィールドの横に直接表示する場合は、CSS を適用する必要があります。明らかに、これにはスタイルシートを使用することをお勧めしますが、簡単にするために、インライン スタイルを使用してこれをレンダリングする方法の例を次に示します。
<%= f.text_field :email, :address, :style => "display: inline-block; float: left;" %>
<% if f.object.errors[:email] %>
<span style="display: inline-block; float: left;">
<%= f.object.errors[:email].join(", ") %>
</span>
<% end %>
<div style="clear: left;"></div>