Как мне использовать Draper в моем ApplicationController?

Мои вопросы относятся к следующему стеку разработки:

  • Рельсы 3.2.1
  • Дрейпер 0,14
  • Родословная 1.2.5

Что я хочу сделать, так это доставить навигацию к моему макету. Итак, я определил фильтр «до» в моем файле ApplicationController.

class ApplicationController < ActionController::Base
  [..]
  before_filter :current_navigation
  [..]
  def current_navigation
    @n = PublicationDecorator.find(1)
  end
end

Как вы видите в приведенном выше листинге кода, я использую draper. Мой PublicationDecorator недоступен в ApplicationController. Итак, как мне украсить все мои Publications?

uninitialized constant ApplicationController::PublicationDecorator

Я использую гем ancestry для реализации иерархии. Еще один вопрос: будут ли декорированы все объекты, если я использую ancestry?


person Robin    schedule 03.06.2012    source источник
comment
аналогично stackoverflow.com/questions /10884740/   -  person Robin    schedule 08.06.2012


Ответы (1)


Сделайте свой 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
person Sandip Mondal    schedule 04.06.2012
comment
Спасибо за ваш ответ! Мой вопрос больше о том, понял ли я, как использовать данную технологию в этой ситуации. Пожалуйста, обратите внимание на мой вопрос «между» и «дальше». - person Robin; 04.06.2012
comment
К вашему ответу добавлена ​​​​некоторая информация, которая полностью отвечает на мой вопрос. - person Robin; 08.06.2012