我应该如何在ApplicationController中使用Draper?

时间:2012-06-03 12:27:05

标签: ruby-on-rails decorator hierarchy

我的问题涉及以下开发堆栈:

  • Rails 3.2.1
  • Draper 0.14
  • Ancestry 1.2.5

我想要做的是,将导航提供给我的布局。所以我在ApplicationController

中定义了一个前置过滤器
class ApplicationController < ActionController::Base
  [..]
  before_filter :current_navigation
  [..]
  def current_navigation
    @n = PublicationDecorator.find(1)
  end
end

如上所示,我正在使用draper。我的PublicationDecoratorApplicationController中不可用。 那么如何让我的所有Publications都被装饰好?

uninitialized constant ApplicationController::PublicationDecorator

我正在使用ancestry gem来实现层次结构。一个进一步的问题是,如果我正在使用ancestry,那么所有对象都会被装饰吗?

1 个答案:

答案 0 :(得分:3)

PublicationDecorator

中提供ApplicationController
require 'publication_decorator.rb' # <--
class ApplicationController < ActionController::Base
  [..]
  before_filter :current_navigation
  [..]
  def current_navigation
    @n = PublicationDecorator.find(1)
  end
end

为了让孩子甚至父母装饰,请将您的装饰添加到装饰者:

class PublicationDecorator < Draper::Base
  decorates :publication
  decorates_association :children
  [..]

end