🔴

ActionView::Template::Error (undefined method `roles_i18n' forのエラーについて

2023/10/05に公開

はじめに

  • 今回は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