【今日のgem】そのロジックはViewではなく「draper」に
テクノロジー
viewテンプレートで、ActiveRecordモデルのデータを出力するとき、 テンプレートの中に表示用のロジックを書いていくと、とってもメンテナンスしにくいコードになってしまいます。
そういうときには、draperを使いましょう
drapergem/draper(https://github.com/drapergem/draper)
たとえば、price(値段)を持つ、productモデルの場合で、 値段を、~円と表示したい場合
|id| name | price |
|1 |パソコン | 50000 |
# app/decorators/product_decorator.rb
class ProductDecorator < Draper::Decorator
def price
"#{object.price}円"
end
end
# app/controllers/producst_contloller.rb
def show
@product = Product.first.decorate
end
# app/views/products/show.html.erb
値段: <%= @product.price %>
関連テーブルも自動的にdecorateしてくれます。
class ArticleDecorator < Draper::Decorator
decorates_association :author
# Decoratorクラスを指定する場合は
decorates_association :author, with: AuthorDecorator
end
helperを使うときは、hを使います
h.content_tag(:div)