[ruby-it] Ajax, Observers e autorefresh

Luca G. Soave luca.soave a gmail.com
Mer 10 Mar 2010 10:51:09 CET


Ciao a tutti, mi servirebbe una dritta su come implementare
l'autorefresh di una lista di posts.

L'idea e', che se un utente sta guardando una pagina che lista i suoi
post e quelli del suo gruppo, dovrebbe vedere arrivare i nuovi post
eseguiti dagli altri in tempo reale, cioe dinamicamente senza fare il
reload della pagina.

Non ho molta dimestichezza con Ajax, ma dovrebbe avere a che fare con i
metodi di ActionView::Helpers::PrototypeHelper:

    * build_callbacks
    * build_observer
    * button_to_remote
    * evaluate_remote_response
    * form_remote_for
    * form_remote_tag
    * link_to_remote
    * method_option_to_s
    * observe_field
    * observe_form
    * options_for_ajax
    * periodically_call_remote
    * remote_form_for
    * remote_function
    * submit_to_remote
    * update_page
    * update_page_tag

la pagina che devo refreshare e' l'index dell'home controller:

--------------------------------------------------------------
root a webby2066:/var/rails/flitter# cat  ./app/views/home/index.html.erb
...
<%= render :partial => "flits_list", :locals => { :flits => @flits }%>
--------------------------------------------------------------

che sostanzialmente chiama un parziale che implementa ogni singolo post:

--------------------------------------------------------------
root a webby2066:/var/rails/flitter# cat
./app/views/home/_flits_list.html.erb
<ul id="flits_list">
  <% flits.each do |flit| %>
    <li<% if flits.first == flit %> class="first"<% end %>>
      <%= image_tag flit.user.gravatar_url %>
      <div class="flit_message_container">
        <%= link_to flit.user.username,
user_flits_path(flit.user.username) %>
        <%= h flit.message %>
        <div class="time_ago">
          <%= distance_of_time_in_words_to_now(flit.created_at) %> ago
        </div>
      </div>
      <div class="clear"></div>
    </li>
  <% end %>
</ul>
--------------------------------------------------------------

in un controller diverso da home,  ho un "evento trigger" che e'
flit.save!  e dovrebbe scatenare il refresh di home/index.html.erb

Non mi e' del tutto chiaro pero' se c'e' un metodo tra quelli elencati
prima, idoneo a rilevare l'evento trigger flit.save! che in sostanza
salva un nuovo post nel DB.

Ringrazio in anticipo per ogni suggerimento
Ciao Luca
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list