🔴
ActionView::Template::Error (undefined method `roles_i18n' forのエラーについて
はじめに
- 今回はAdminを使った管理者の編集を行う際に現れたエラーについて書いていきます。
対象者
- Rails学習中の方
今回のエラー
ActionView::Template::Error (undefined method `roles_i18n' for #<Class:XXX>):
30: </div>
31: <div class="form-group">
32: <%= f.label :role %>
33: <%= f.select :role, User.roles_i18n.invert, {}, class: 'form-control' %>
34: </div>
35: <%= f.submit class: 'btn btn-primary' %>
36: <% end %>
結論
-
gem 'enum_help'
をインストールしていなかった。
解説
エラーを紐解く
- エラーメッセージから見ると、Userモデルに
roles_i18n
メソッドが定義されていないためにエラーが起きている。 -
roles_i18n
は通常、enumのキーを国際化(i18n)するために使われるメソッドです。
- まずはUserモデルの中に
role
というenum
が定義されているか確認します。 - もしenumが定義されていなければ、それを追加する必要があリます。
私の場合
- 私の場合は、user.rb内には下記のようにenumは定義されていました。
enum role: { general: 0, admin: 1 }
- しかし、
roles_i18n
メソッドは定義されていませんでした。 - 調べた結果、gemが不足していることに気づきました。
感想
私はroles_i18n
を定義するためにはgem 'enum_help'
をインストールする必要があることを理解していませんでした。次からは気をつけます。>_<
ご閲覧ありがとうございました。
Discussion