2009-09-02 6 views
2

Après l'utilisateur appuyez sur le bouton de sauvegarde, j'ai besoin de rendu nouvelle page et render_to_string Aperçu de cette page dans le même temps. Pour le stocker dans DB.Comment rendre deux documents html par action?

J'ai donc obtenu l'exception DoubleRenderError.

Je tente d'exécuter @performed?

Mais Layouts purge après le premier rendu. Des idées?

Merci pour vos réponses!

+0

Je vois quelques solutions: - Créer rappel à une autre action - Créer contrôleur séparé précession cette déchirante –

+0

quelques petites choses viennent à l'esprit - pouvez-vous en dire plus sur la raison pour laquelle vous voulez stocker un aperçu de la page dans la base de données? – austinfromboston

+0

Avec plaisir! Je devrais envoyer ce code HTML en tant qu'e-mail à l'utilisateur. Donc je devrais rendre un aperçu de cette page. –

Répondre

1

J'ai réussi à utiliser à la fois render_to_string et render sur la même requête.

Je pense que vous devez vous assurer que vous appelez render_to_string en premier. YMMV

0

Je ferais probablement cela en utilisant middleware rack.

class ResponseLoggerMiddleware 
    def initialize(app) 
     @app = app 
    end 

    def call(env) 
     status, headers, response = @app.call(env) 
     ... save your response to the database ...  
     [status, headers, response] 
    end 
end 

Vous pouvez l'installer comme ceci:

# environment.rb 
Rails::Initializer.run do |config| 
    ... 
    config.middleware.use ResponseLoggerMiddleware 
end 
Questions connexes