【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多