Zmienic renderowany widok

Witajcie,

Jak najsensowniej sie zabrac za zmiane w wyrenderowanym dokumencie xhtml ?

Mam controller Welcome w nim metode index, metoda index konczy sie przez render :layout => "application"
W efekcie dostaje piekny dokument XHTML, niemniej jednak chcialbym go potraktowac przez hpricot i dopiero na koncu, w zmienionej postaci wypluc do klienta http.

Jak tego dokonac ? Czyli jak / gdzie / kiedy wpiac kod zmieniajacy wyrenderowany dokument ? Jak do Hpricot przekazac kod z Render ? Jak wyslac potem przechwycony wynik render do klienta http ?

Pozdrowienia

No to troche na hardkora. Nawet nie wiem po co coś takiego chciałby ktoś robić :wink: podziel sie intecjami.
W każdym będzie razie troche patetycznie:

[code]class HardcoreController < ApplicationController
def render_nasty_things
content = render_to_string
render(:text => do_nasty_things_with_content(content))
end

protected
def do_nasty_things_with_content(content)
# hpricot magic with content here
content
end
end[/code]

Rack middlewares FTW!

Przykład: http://pastie.org/818925 (wyciąłem większość kodu, zostawiłem go o najważniejsze). W miejscu komentarza możesz sobie pozmieniać obecne body.

Ja używałem tego do zapisania czasu wykonania requestu i wstawienia odpowiedniego kodu javascript do body - w ten sposób mierzyłem czas od początku requestu do załadowania wszystkich javascriptów.

Spójrz na kod Rack::Validate który “przechwytuje” dokument html, wysyła go do W3C Validatora i dodaje do dokumentu raport z walidacji.

Uh, widze ze moje rails-fu jest skonstniałe deczko

Dziekuje, @PaK, Twoje rozwiazanie jest spoko, gdyby nie to ze musialbym teraz przepisywac aplikacje, idea jednak jest ok.

Gdyby nie fakt ze przez przypadek zobaczylem movie na railscasts.com o rack:middleware, pewnie bym to rozwiazanie zastosowal.

Napisalem swoja klase i wpialem w enviroment.rb, na bazie tego filmiku, cos na wzor co podal drogus (dziekuje @drogus)

@hosiawak , bardzo fajna sprawa, przelaczanie querystringiem walidacji, sprytne :slight_smile:

@PaK, jesli chodzi o podzielenie sie moja “intencja” chodzi o podmiane slow na okienka z reklamami, takie tooltipy typu prototip, z tym ze maja byc podmienione bez uzycia javascriptu.

Pozdrowienia