2010-06-09 14 views
5

Mam aplikację Rails 2.3.5 i próbuję renderować kilka części z modelu (wiem, wiem - nie powinienem). Powodem takiego działania jest zintegrowanie serwera Comet (APE) z moją aplikacją Rails i konieczność wypychania aktualizacji na podstawie zdarzeń Modelu (np. After_create).Jak renderować częściowe z modelu w szynach 2.3.5

Próbowałem w ten sposób:

ActionView::Base.new(Rails::Configuration.new.view_path).render(:partial => "pages/show", :locals => {:page => self}) 

co pozwala mi uczynić prostych partials że NIE pomocnicy użytkowników, jednak gdy próbuję użytkownikowi link_to w moim częściowe, i komunikat o błędzie informujący:

undefined method `url_for' for nil:NilClass 

Upewniłem się, że obiekt przekazywany do "project_path (project)" nie jest zerowy. Próbowałem również w tym:

include ActionView::Helpers::UrlHelper 
include ActionController::UrlWriter 

w module, który zawiera metodę, która sprawia, że ​​powyższy „render” połączenia.

Czy ktoś wie, jak to obejść?

Dzięki

+0

Rails.configuration.view_path – tribalvibes

Odpowiedz

7

Używamy klejnotu render_anywhere i byliśmy z niego zadowoleni.

Od README:

require 'render_anywhere' 

class AnyClass 
    include RenderAnwhere 

    def build_html 
    html = render :template => 'normal/template/reference', 
        :layout => 'application' 
    html 
    end 
end 
+1

Pytanie było o Rails 2.3.x, ale jest za gem "> = 3.0.7" –

+2

Zgaduję gem był skierowany o 2.X, gdy zadano to pytanie. Spróbuj użyć starszej wersji z tagami, jeśli nadal używasz wersji 2.3.x – klochner

0

Włączenie tych dwóch modułów powinno wystarczyć. Może zapomniałeś ustawić default_url_options[:host]? Bez niego można użyć pomocników _path, ale nie _url.

Dołącz te moduły i sprawdź, czy działa w irb, może to doprowadzi Cię do właściwego rozwiązania.

Powiązane problemy