2010-06-09 23 views
5

Tengo una aplicación Rails 2.3.5 y estoy tratando de renderizar varios parciales dentro de un modelo (lo sé, lo sé, no se supone que lo haga). La razón por la que hago esto es porque estoy integrando un servidor Comet (APE) en mi aplicación Rails y necesito retirar las actualizaciones según los eventos del Modelo (por ejemplo, after_create).Cómo renderizar un parcial desde un modelo en Rails 2.3.5

He intentado hacer esto:

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

Lo que me permite rendir parciales simples que no lo hacen los ayudantes de los usuarios, sin embargo si intento usuario una link_to en mi parcial, recibo un error que indica:

undefined method `url_for' for nil:NilClass 

Me he asegurado de que el objeto que se pasa al "project_path (proyecto)" no sea nulo. También he intentado incluyendo:

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

en el módulo que contiene el método que hace la llamada "render" anterior.

¿Alguien sabe cómo evitar esto?

Gracias

+0

Rails.configuration.view_path – tribalvibes

Respuesta

7

Usamos la gema render_anywhere y estamos contentos con ella.

Desde el README:

require 'render_anywhere' 

class AnyClass 
    include RenderAnwhere 

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

La pregunta fue sobre rieles 2.3.x, pero la joya es para "> = 3.0.7" –

+2

Estoy adivinando la gema, se orientó en 2.X cuando se hizo esta pregunta. Intenta usar una versión etiquetada anterior si todavía estás en 2.3.x – klochner

0

Incluir estos dos módulos debería ser suficiente. Tal vez se olvidó de configurar default_url_options[:host]? Sin él puede usar ayudantes _path, pero no _url.

Incluya estos módulos y compruebe si funciona en irb, tal vez le conduzca a la solución correcta.

Cuestiones relacionadas