【问题标题】:public_activity gem decorated with Draper用 Draper 装饰的 public_activity gem
【发布时间】:2013-12-27 16:08:08
【问题描述】:
我正在尝试使用 Draper 装饰由 public_activity gem 创建的活动集合。
但是,PublicActivity::Activity 似乎没有从 ActiveRecord 继承(我的假设是否正确?)所以我需要将 include Draper::Decoratable 添加到模型中,但是那个 PublicActivity 模型到底在哪里?
顺便说一句,这是我得到的错误:
Could not infer a decorator for PublicActivity::Activity.
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-4
draper
【解决方案1】:
好吧,事实证明这是行不通的:
class StudentActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc").decorate
end
end
我猜这是因为命名空间查询 PublicActivity::Activty 没有从 ActiveRecord 继承,因此不包括 Draper::Decoratable,但我不确定。如果我错了,请纠正我。
但是,使用 Draper,您可以装饰对象以及查询,所以这确实有效...
class StudentActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc")
@activities = StudentActivitiesDecorator.decorate_collection(@activities)
end
end
装饰器还必须包含decorates PublicActivity::Activity
【解决方案2】:
只需将activity_decorator.rb 放入decorators/public_activity:
# app/decorators/public_activity/activity_decorator.rb
class PublicActivity::ActivityDecorator < Draper::Decorator
end