ActiveDecoratorをControllerで使いたいっ![Rails]
2021年5月21日
UserDecorator#name_gender
っていうのを追加したまでは良かったんですが、これjsonで返したいなーと。
module UserDecorator def name_gender "#{name}(#{gender})" end end
もちろんView(erb)であれば
<%= @user.name_gender %>
と呼べるんですが、
コントローラーでjsonを返してもname_gender
が入ってない
class UserController < ApplicationController def index @user = User.find(1) render json: @user end end
decorateを直接呼び出すといけるらしい
class UserController < ApplicationController def index @user = User.find(1) decorate_user = ActiveDecorator::Decorator.instance.decorate(@user) render json: { name_gender: decorate_user.name_gender } end end
参考
amatsuda/active_decorator: ORM agnostic truly Object-Oriented view helper for Rails 4, 5, and 6