Доступ к помощникам Rails из презентатора/модуля?

Есть много вопросов о доступе к хелперам Rails из модели, и все они справедливо утверждают, что ответ — не делать этого. Это не тот вопрос.

У меня есть довольно сложный код контроллера и представления, который я хочу абстрагировать в класс презентатора. Но этот класс не является потомком ApplicationController. Как я могу получить доступ, скажем, к текущему_пользователю devise?


person Jay Levitt    schedule 09.08.2011    source источник


Ответы (1)


Похоже, что на данный момент нет «официального правильного» способа сделать это. Две возможности:

  1. Это хакерство, но вы можете сохранить текущий контроллер в ApplicationController и ссылаться на него в своих презентаторах, чтобы получить доступ к помощникам:

    class ApplicationController < ActionController::Base
      prepend_before_filter { @@current_controller = self }
    end
    
    class YourPresenter
      def current_user
        ApplicationController.current_controller.current_user
      end
    end
    
    1. Jeff Casimir is working on a great Decorator/Presenter gem called draper that encapsulates the whole idea:

https://github.com/jcasimir/draper

person Jay Levitt    schedule 11.08.2011
comment
Это все еще путь в 2015 году? - person amoebe; 01.12.2015