2013-05-24 19 views
5

Mam dekoratora, który zwraca ciąg znaków lub kolekcję.Renderowanie fragmentu z Draper Decorator

Moim zdaniem, chcę wyświetlić powrót tej metody dekoratora.

class MyDecorator < Draper::Decorator 
    def stuff 
    if condition 
     'some string' 
    else 
     render model.some_collection 
    end 
    end 
end 

Teraz moim zdaniem chcę renderować ciąg znaków, jeśli jest to ciąg znaków lub wyrenderować kolekcję.

= my_object.stuff 

Niestety nie można uzyskać dostępu do metody render wewnątrz Draper::Decorator. Myśli?

Odpowiedz

7

Od https://github.com/drapergem/draper#accessing-helpers:

Normalne Szyny pomocnicy są nadal przydatne dla wielu zadań. pod warunkiem pomocnik obu szyn i te zdefiniowane w aplikacji można uzyskać za pośrednictwem metody h

więc zastąpić render z h.render i powinno działać dobrze.

+0

Nie miałem jeszcze okazji wprowadzić tego rozwiązania, dziękuję za odpowiedź. Zaznaczę to jako kompletne, gdy tylko sprawdzę, czy działa. Nie mogę uwierzyć, że przegapiłem to w Readme ... – ardavis

2

Możesz dodać moduł Draper's Draper::LazyHelpers do dekoratora, aby korzystać z ActionView::Helpers i pozostałej części ActionView, jak zawsze masz z widokami.