🍎

【Rails】error prohibited this obj from being saved:が日本語化されなかった原因について

2023/07/23に公開

はじめに

バリデーションによるエラーメッセージの日本語化の実装を行っていた際、
「error prohibited this obj from being saved:」が日本語化されないエラーが発生しました。

altテキスト

原因

エラーメッセージを下記のように部分テンプレートで作成していた。

app/views/layouts/_errors_messages.html.erb
<% if obj.errors.any? %>
  <div id="error_explanation">
    <h3><%= pluralize(obj.errors.count, "error") %> prohibited this obj from being saved:</h3>
    <ul>
      <% obj.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
    </ul>
  </div>
<% end %>
app/views/layouts/_errors_messages.html.erb
3行目の下記記述がエラーの原因

<%= pluralize(obj.errors.count, "error") %> prohibited this obj from being saved:

解決方法

下記記述に変更したところ、日本語で表示されるようになりました!

app/views/layouts/_errors_messages.html.erb
<%= t("errors.template.header", model: obj.model_name.human, count: obj.errors.count) %>

詳細はいまいち理解できていないので、調べます🤨

Discussion