🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#129
Author: Jaroslaw Zabiello
Date: Wed, 09 Aug 2006 16:20
22 lines
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
#130
Author: Marcin Mielżyński
Date: Thu, 10 Aug 2006 11:55
15 lines
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
#131
Author: Jaroslaw Zabiello
Date: Thu, 10 Aug 2006 13:09
27 lines
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
#132
Author: Marcin Mielżyński
Date: Thu, 10 Aug 2006 15:22
21 lines
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