# Observe\_field

**URL:** <https://www.ruby-forum.com/t/observe-field/141983>\
**Category:** IT\
**Created:** [July 2, 2008, 12:16pm UTC](https://www.ruby-forum.com/t/observe-field/141983 "2008-07-02T12:16:41Z")\
**Posts on this page:** 3\
**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:** [July 2, 2008, 12:16pm UTC](https://www.ruby-forum.com/t/observe-field/141983/1 "2008-07-02T12:16:41Z")

</div>

Ciao a tutti,  
ho un problema con un observe\_field.  
Ho installato il plugin per la paginazione  
[http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic\_pagination/](http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/)

Ho creato la vista list.rhtml cosÃ¬:

\<%= text\_field\_tag(“query”, params[‘query’], :size =\> 10 ) %\>  
\<%= image\_tag(“spinner.gif”,  
:align =\> “absmiddle”,  
:border =\> 0,  
:id =\> “spinner”,  
:style =\>“display: none;” ) %\>

\<%= observe\_field “query”, :frequency =\> 1,  
:update =\> ‘table’,  
:before =\> “Element.show(‘spinner’)”,  
:success =\> “Element.hide(‘spinner’)”,  
:url =\> {:action =\> ‘list’, :controller=\>‘passengers’},  
:with =\> params[:query],  
:on =\> ‘changed’ %\>

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

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

\<% if @total == 0 %\>

No passengers found...

\<% else %\>

Number of passengers found : **\<%= @total %\>**

\<% if @passengers\_pages.page\_count \> 1 %\> Page&nbsp;: \<%= pagination\_links\_remote @passengers\_pages %\> \<% end %\>

 \<% @passengers.each do |i| %\> 

| \<%= i.name %\> |

\<% end %\>

Ora l’observe\_field non funziona, non notifica all’action list che Ã¨  
cambiato il contenuto del text\_field.

Il controller Ã¨ il seguente:  
def list

```
passengers_per_page = 3

conditions = ["name LIKE ?", "%#{params[:query]}%"] unless

```

params[:query].nil?  
@total = Passenger.count(:conditions =\> conditions)  
@passengers\_pages, @passengers = paginate :passengers, :conditions  
=\> conditions, :per\_page =\> passengers\_per\_page

```
if request.xml_http_request?
  render :partial => "passengers_list", :layout => false
end

```

end

Scusatemi se ho scritto tanto.  
Grazie a tutti, anticipatamente.

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:** [July 2, 2008, 1:35pm UTC](https://www.ruby-forum.com/t/observe-field/141983/2 "2008-07-02T13:35:08Z")

</div>

> \<%= render :partial =\> “passengers\_list” %\>

Non ne sono sicuro, ma cerco di vedere se ho capito bene.  
Ricapitolando:

Contenuto della vista ‘list’

- spinner
- observer che richiama una ajax call ogni secondo
- div con id=‘table’

Contenuto del partial ‘list\_passanger’

- lista dei passanger

Action list

- carica view ‘list’ (nel caso di chiamate no-ajax)
- carica partial ‘list\_passanger’ (nel caso di chiamate ajax)

La logica mi sembra tutta giusta, e quindi potrebbe esserci un errore  
nell’azione. Di solito succede se non vedi nessun cambiamento. In questo  
caso l’unica soluzione è installare Firebug [http://getfirebug.com/](http://getfirebug.com/). Se  
ci  
fosse un errore, quando apri la console ti troverai un bel rigo rosso.  
Aprendolo ti troverai il messaggio di errore che di solito vedi sulla  
pagina  
quando non ci sono chiamate Ajax.

## Facci sapere come va, e se era li il problema.

Andrea R., like [http://mikamai.com](http://mikamai.com)  
Writing [http://sensejs.wordpress.com/](http://sensejs.wordpress.com/)  
Collaborating [http://therubymine.it](http://therubymine.it)  
Reading [http://stacktrace.it](http://stacktrace.it)

---

<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:** [July 3, 2008, 9:01am UTC](https://www.ruby-forum.com/t/observe-field/141983/3 "2008-07-03T09:01:40Z")

</div>

> La logica mi sembra tutta giusta, e quindi potrebbe esserci un errore  
> nell’azione. Di solito succede se non vedi nessun cambiamento. In questo  
> caso l’unica soluzione ï¿½ installare Firebug [http://getfirebug.com/](http://getfirebug.com/). Se  
> ci  
> fosse un errore, quando apri la console ti troverai un bel rigo rosso.  
> Aprendolo ti troverai il messaggio di errore che di solito vedi sulla  
> pagina  
> quando non ci sono chiamate Ajax.
> 
> ## Facci sapere come va, e se era li il problema.

Ciao Andrea,

il problema era banale, infatti la logica era giusta: quando inserivo il  
filtro nella text\_field\_tag non davo l’invio, e quindi non lanciavo  
l’action list.

Grazie comunque per l’interessamento.

Catiana
