デコレーターの導入
デコレーターの導入 [dacoratorとは?] model→decorator→viewのようにmodelとviewの間にdecoratorを挟むことで、modelの内容を装飾してviewに表示できる。 modelの属性を装飾してviewに表示する場合は、そのメソッドをmodel,helper,decoratorいづれかに記載することになるが、以下のように使い分ける。 [decoratorの導入手順] Gemfileに以下を記載
gem "draper"
↓
bundle install
↓
rails generate draper:install
※draperをインストールする
↓
rails generate decorator モデル名
ex)rails generate decorator User
※[app/decorators]ディレクトリにdecoratorのファイルができる。
decoratorファイルに記載があるdelegate_allとは、モデルのメソッドをそのままdecoratorでも使えるようにする。
↓
[app/decorators]ディレクトリのdecoratorのファイルに以下のように記載する。
class UserDecorator < Draper::Decorator delegate_all def full_name "#{object.last_name} #{object.first_name}" end end
↓
viewファイルでdecoratorのメソッドを使う時は、以下のようにする。
<%= current_user.decorate.full_name %>
※メソッドの前に[decorate.]を入れる。
参考記事:
https://jiro8899.hatenablog.com/entry/2020/02/16/235117
https://study-diary.hatenadiary.jp/entry/2020/08/04/132953
https://tech.mof-mof.co.jp/blog/draper/