こんな感じに
前提情報
- Productモデルにname, email, ageカラムを作成
- presece: trueのバリデーションを設定
修正内容
1.エラーを表示するパーシャルを作成 2.パーシャルに引数を渡す。(attributeは :nameなどの項目の情報が入っています。modelには productインスタンス)
_error_message.html.erb <% if model.errors.present? %> <% model.errors.full_messages_for(attribute).each do |message|%> <%= message%> <%end%> <%end%>
2.フォームでパーシャルを呼び出す
modelとattributeに引数を渡す
<%= form_with(model: product, local: true) do |form| %> <div class="field"> <%= form.label :name %> <%= form.text_field :name %> <%= render 'error_message', model: product, attribute: :name %> </div> <div class="field"> <%= form.label :email %> <%= form.text_field :email %> <%= render 'error_message', model: product, attribute: :email %> </div> <div class="field"> <%= form.label :age %> <%= form.number_field :age %> <%= render 'error_message', model: product, attribute: :age %> </div> <div class="actions"> <%= form.submit %> </div> <% end %>
3.ja.ymlの設定
application.rbで日本語指定
config.i18n.default_locale = :ja
これを参考に