Observe_field

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/

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 : <%= 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

<%= 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/. 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
Writing http://sensejs.wordpress.com/
Collaborating http://therubymine.it
Reading http://stacktrace.it

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/. 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