2010-06-09 6 views
5

Ho un'applicazione Rails 2.3.5 e sto provando a eseguire il rendering di parziali all'interno di un modello (so che non so). Il motivo per cui sto facendo è l'integrazione di un server Comet (APE) nella mia app Rails e la necessità di inviare gli aggiornamenti in base agli eventi del modello (ad esempio after_create).Come eseguire il rendering di un partial da un modello in Rails 2.3.5

Ho provato a fare questo:

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

Il che mi permette di rendere semplici parziali che non lo fanno aiutanti degli utenti, se provo a all'utente un link_to nel mio parziale, viene visualizzato un errore che indica:

undefined method `url_for' for nil:NilClass 

Ho fatto in modo che l'oggetto passato nel "project_path (progetto)" non sia nullo. Ho anche provato a includere:

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

nel Modulo che contiene il metodo che effettua la chiamata "rendering" sopra.

Qualcuno sa come risolvere questo problema?

Grazie

+0

Rails.configuration.view_path – tribalvibes

risposta

7

Utilizziamo la gemma render_anywhere e ne siamo rimasti contenti.

Dal README:

require 'render_anywhere' 

class AnyClass 
    include RenderAnwhere 

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

La domanda era su Rails 2.3.x, ma la gemma è per "> = 3.0.7" –

+2

Sto indovinando la gemma è stata mirata a 2.X quando è stata posta questa domanda. Prova a utilizzare una versione con tag più vecchio se sei ancora su 2.3.x – klochner

0

Includere questi due moduli dovrebbe essere sufficiente. Forse hai dimenticato di impostare default_url_options[:host]? Senza di esso è possibile utilizzare gli helper _path, ma non quelli _url.

Includere questi moduli e verificare se funziona in irb, forse ti porterà alla giusta soluzione.