Thread View: pl.comp.lang.ruby
4 messages
4 total messages
Started by Jaroslaw Zabiello
Wed, 09 Aug 2006 16:20
page[id] w RJS i $(id) w Prototype
Author: Jaroslaw Zabiello
Date: Wed, 09 Aug 2006 16:20
Date: Wed, 09 Aug 2006 16:20
22 lines
1716 bytes
1716 bytes
Aby sprawdzić w Prototype czy istnieje element o danym id, wystarczy
napisać: if ($(id)) { ... }. Chciałbym to samo zrobić w RJS, ale to nie
działa. Tzn. page[id] *zawsze* istnieje i zwraca jakiś obiekt
#<ActionView::Helpers::JavaScriptElementProxy:0x37f332c>
RJS:
if page[id]
# zawsze tu wchodzi nawet jak document.getElementById(id) nie istnieje!
end
Próbowałem przyjrzeć się bliżej temu obiektowi, ale p page[id].methods
wyświetla mi tylko #<ActionView::Helpers::JavaScriptElementProxy:0x37f332c>
Kompletnie nie wiadomo co on robi. W api.rubyonrails.pl też nie można nic
znaleźć na temat JavaScriptElementProxy. Ostatecznie musiałem w RJS użyć
chamskiego JavaScripta za pomocą page << mój kod js. page[id].empty? czy
page[id].is_empty? też nie działa, wywala pewnie jakiś błąd JavaScriptu
(nie wiem na co to jest tłumaczone), bo ani w logu ani spod plugina FireBug
nic nie mogę zobaczyć.
--
Jarosław Zabiełło
http://blog.zabiello.com
Re: page[id] w RJS i $(id) w Prototype
Author: Marcin Mielżyński
Date: Thu, 10 Aug 2006 11:55
Date: Thu, 10 Aug 2006 11:55
15 lines
1233 bytes
1233 bytes
Nie da się zrobić tego na normalnym if - ponieważ JavaScriptElementProxy działa głównie na method_missing, a if to jest normalna konstrukcja której nie da się przechwycić. Trzeba dodać w JavaScriptElementProxy obsługę nowej metody biorącej blok, np: page[:id].exists? do end przechwycić to i wygenerować odpowiedni kod js lopex
Re: page[id] w RJS i $(id) w Prototype
Author: Jaroslaw Zabiello
Date: Thu, 10 Aug 2006 13:09
Date: Thu, 10 Aug 2006 13:09
27 lines
1636 bytes
1636 bytes
On Thu, 10 Aug 2006 13:55:36 +0200, Marcin Mielżyński wrote: > Nie da się zrobić tego na normalnym if - ponieważ JavaScriptElementProxy > działa głównie na method_missing, a if to jest normalna konstrukcja > której nie da się przechwycić. > > Trzeba dodać w JavaScriptElementProxy obsługę nowej metody biorącej > blok, np: > > page[:id].exists? do > > end > > przechwycić to i wygenerować odpowiedni kod js Tylko, że ja nie chcę tu generować js ale wykorzystać warunek do kontynuowania kodu *w Ruby* (rjs). A nie dałoby się zaimplementować samo exists? tak aby mozna było pisać bardziej naturalnie: if page[:id].exists? A tak w ogóle da się jakoś prosto sprawdzić jaki js jest generowany przez te railsowe wrappery? -- Jarosław Zabiełło http://blog.zabiello.com
Re: page[id] w RJS i $(id) w Prototype
Author: Marcin Mielżyński
Date: Thu, 10 Aug 2006 15:22
Date: Thu, 10 Aug 2006 15:22
21 lines
1452 bytes
1452 bytes
Jaroslaw Zabiello wrote: > Tylko, że ja nie chcę tu generować js ale wykorzystać warunek do > kontynuowania kodu *w Ruby* (rjs). > tego już zupełnie nie rozumiem - dom na serwerze ? - rjs jest generowany i dopiero wtedy wysyłany do klienta, żadnej magii tu nie ma... > A tak w ogóle da się jakoś prosto sprawdzić jaki js jest generowany przez > te railsowe wrappery? > /costam/costam.rjs albo: http://glu.ttono.us/articles/2006/05/29/guide-test-driven-rjs-with-arts lopex
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads