# Periodically\_call\_remote

**URL:** <https://www.ruby-forum.com/t/periodically-call-remote/140678>\
**Category:** IT\
**Created:** [June 17, 2008, 12:44pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678 "2008-06-17T12:44:14Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 12:44pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/1 "2008-06-17T12:44:14Z")

</div>

Ciao a tutti,  
ho un piccolo problema con periodically\_call\_remote.  
Vi spiego:

La vista passengers\_list Ã¨ cosÃ¬:

\<%=periodically\_call\_remote(:url =\> {:action =\> “passengers\_list”},  
:frequency =\> ‘5’, :layout=\>false)%\>

 div#passengers{float:left;width:33%;} div#passengers\_onboard{float:left;width:33%;} div#passengers\_embarking{float:left;width:33%;}
 \<%= render :partial =\> 'passengers\_list'%\>

invece la vista \_passengers\_list Ã¨ cosÃ¬:

\<%if @passengers.size != 0 then%\>

#### Lista Passeggeri

 \<% for passenger in @passengers%\> - \<%= passenger.surname%\> \<%= passenger.name%\> 
 \<%end%\> 

#### Passegeri imbarcati

 \<% for passenger in @passengers\_onboard%\> - \<%= passenger.surname%\> \<%= passenger.name%\> 
 \<%end%\> 

#### Passeggeri da imbarcare

 \<% for passenger in @passengers\_embarking%\> - \<%= passenger.surname%\> \<%= passenger.name%\> 
 \<%end%\> 

\<%else%\>
#### Non ci sono passeggeri per la tratta selezionata
\<%end%\>

Back

a questo punto nel controller ho definito il seguente metodo:

@passengers = Travel.find(  
:all,  
:conditions=\>[“departure\_id = ?”, params[:id]],  
:joins=\>“INNER JOIN passengers on passengers.id  
= travels.passenger\_id INNER JOIN departures on departures.id =  
travels.departure\_id”,  
:select=\>“passengers._, travels._”  
)  
@passengers\_onboard = Travel.find(  
:all,  
:conditions=\>[“departure\_id = ? AND  
status\_board\_id = 1”, params[:id]],  
:joins=\>“INNER JOIN passengers on passengers.id  
= travels.passenger\_id INNER JOIN departures on departures.id =  
travels.departure\_id”,  
:select=\>“passengers._, travels._”  
)  
@passengers\_embarking = Travel.find(  
:all,  
:conditions=\>[“departure\_id = ? AND  
status\_board\_id = 0”, params[:id]],  
:joins=\>“INNER JOIN passengers on passengers.id  
= travels.passenger\_id INNER JOIN departures on departures.id =  
travels.departure\_id”,  
:select=\>“passengers._, travels._”  
)

costantemente controllo il valore dello stato del passeggero nel DB.  
Il problema perÃ² Ã¨ che la vista passengers\_list nn viene aggiornata.

Qualcuno sa aiutarmi? Dove sbaglio?

Grazie a tutti,anticipatamente.

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 12:57pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/2 "2008-06-17T12:57:50Z")

</div>

Devi specificare dove aggiornare la view.  
prova con  
\<%=periodically\_call\_remote(:url =\> {:action =\> “passengers\_list”},  
:frequency =\> ‘5’, :layout=\>false, :update =\> ‘passengers\_list’ )%\>

ciao e fammi sapere

On Tue, Jun 17, 2008 at 12:44 PM, Catiana T.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> div#passengers\_embarking{float:left;width:33%;}  
> \<% for passenger in @passengers%\>
> 
> #### Non ci sono passeggeri per la tratta selezionata
> :joins=\>"INNER JOIN passengers on passengers.id travels.departure\_id", ) Ml mailing list removed\_email\_address@domain.invalid http://lists.ruby-it.org/mailman/listinfo/ml

–

* * *

Piero B.  
Consulting  
Software Developer - Database dept.  
OgilvyOne worldwide, Milan  
E-mail: removed\_email\_address@domain.invalid  
E-mail: removed\_email\_address@domain.invalid  
My Blog: [cookedapple.net](http://cookedapple.net)  
Linux User #403396

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 2:46pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/3 "2008-06-17T14:46:59Z")

</div>

Piero B. wrote:

> Devi specificare dove aggiornare la view.  
> prova con  
> \<%=periodically\_call\_remote(:url =\> {:action =\> “passengers\_list”},  
> :frequency =\> ‘5’, :layout=\>false, :update =\> ‘passengers\_list’ )%\>
> 
> ciao e fammi sapere

Grazie per aver risposto.

Ho provato ma succede che nel punto

 \<%= render :partial =\> 'passengers\_list'%\>

anzichÃ¨ sostituire solo la vista \_passengers\_list, sostituisce tutta la  
pagina passengers\_list compresa di menÃ¹, header, footer ecc…

Spero di essere stata chiara.

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 3:00pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/4 "2008-06-17T15:00:27Z")

</div>

> anzichè sostituire solo la vista \_passengers\_list, sostituisce tutta la  
> pagina passengers\_list compresa di menù, header, footer ecc…

Probabilmente nel metodo del controller non dici di non renderizzare il  
layout  
prova con

render :layout =\> false

mi sembra di capire che richiami la stessa view in due modi,  
normalmente e via ajax, in tal caso usa

render(:layout =\> false) if request.xhr?

che non renderizza il layout nel caso la chiamata corrente sia una  
chiamata ajax

–

* * *

Piero B.  
Consulting  
Software Developer - Database dept.  
OgilvyOne worldwide, Milan  
E-mail: removed\_email\_address@domain.invalid  
E-mail: removed\_email\_address@domain.invalid  
My Blog: [cookedapple.net](http://cookedapple.net)  
Linux User #403396

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 3:57pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/5 "2008-06-17T15:57:49Z")

</div>

> Ma toglimi una curiosità; cosa vuole dire if request.xhr?

render(:layout =\> false) if request.xhr?

in ruby puoi mettere l’if alla fine di una espressione e puoi  
compattare parecchio il codice

sarebbe come dire

if request.xml\_http\_request? == true  
render(:layout =\> false)  
end

che diventa, dato che xml\_http\_request? e xhr? sono alias

if request.xhr? == true  
render(:layout =\> false)  
end

poi

if request.xhr?  
render(:layout =\> false)  
end

e alla fine…  
render(:layout =\> false) if request.xhr?

se invece non ti e’ chiaro cosa fa request.xhr?  
request e’ l’oggetto che identifica la richiesta attuale fatta al  
server, a questo oggetto puoi chiedere un po di tutto, ad esempio  
l’indirizzo ip del client o se si tratta di una connessione  
protetta…

xhr? e’ un alias di xml\_http\_request? che ti dice se la richiesta e’  
stata effettuata attraverso ajax.  
quindi nel tuo caso quando farai una richiesta ajax non verra’  
renderizzato il layout

–

* * *

Piero B.  
Consulting  
Software Developer - Database dept.  
OgilvyOne worldwide, Milan  
E-mail: removed\_email\_address@domain.invalid  
E-mail: removed\_email\_address@domain.invalid  
My Blog: [cookedapple.net](http://cookedapple.net)  
Linux User #403396

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 3:30pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/6 "2008-06-17T15:30:23Z")

</div>

Piero B. wrote:

> > anzichï¿½ sostituire solo la vista \_passengers\_list, sostituisce tutta la  
> > pagina passengers\_list compresa di menï¿½, header, footer ecc…
> 
> Probabilmente nel metodo del controller non dici di non renderizzare il  
> layout  
> prova con
> 
> render :layout =\> false
> 
> mi sembra di capire che richiami la stessa view in due modi,  
> normalmente e via ajax, in tal caso usa
> 
> render(:layout =\> false) if request.xhr?
> 
> che non renderizza il layout nel caso la chiamata corrente sia una  
> chiamata ajax

Grazie, grazie mille.  
sembra funzionare…

Ma toglimi una curiositÃ ; cosa vuole dire if request.xhr?

Grazie tante ancora.

Ciao  
Catiana

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 17, 2008, 4:01pm UTC](https://www.ruby-forum.com/t/periodically-call-remote/140678/7 "2008-06-17T16:01:12Z")

</div>

> render(:layout =\> false) if request.xhr?
> 
> se invece non ti e’ chiaro cosa fa request.xhr?  
> request e’ l’oggetto che identifica la richiesta attuale fatta al  
> server, a questo oggetto puoi chiedere un po di tutto, ad esempio  
> l’indirizzo ip del client o se si tratta di una connessione  
> protetta…
> 
> xhr? e’ un alias di xml\_http\_request? che ti dice se la richiesta e’  
> stata effettuata attraverso ajax.  
> quindi nel tuo caso quando farai una richiesta ajax non verra’  
> renderizzato il layout

Grazie mille sei stato chiarissimo e soprattutto gentilissimo.

Ciao e grazie ancora

Catiana
