2013-05-27 38 views
0

我有一个应用程序,其中我不同的网络有消息。如何Ajax从部分重新加载部分

在我的网络节目视图中,我用部分“概览”显示所有消息,其中显示了消息内容的链接。该消息的内容被加载#detailed DIV中AJAX:

<div class="span2" id="sidebar"> 
    <%= render :partial => 'shared/sidebar' %> 
</div> 

<div class="span4" id="overview"> 
    <%= render :partial => 'overview' %> 
</div> 

<div class="span6" id="detailed"> 
    <%= render :partial => 'nothing' %> 
</div> 

_overview.html.erb,其中I:

<h2>Messages</h2> 
UNREAD: 
<%= render :partial => 'items', :collection => @task.find_all{|item| item.unread == true }.sort_by(&:created_at).reverse, :as => :item %> 
READ: 
<%= render :partial => 'items', :collection => @task.find_all{|item| item.unread == false }.sort_by(&:created_at).reverse, :as => :item %> 

_items.html.erb:

<%= div_for item do %> 
     <%= link_to(network_message_path(@network, item), :remote => true, :class => ["message item", ("unread" if item.unread == true)]) do %>...<% end %> 
<% end %> 

该消息是包含一个完整的内容,评论等部分。消息被加载的代码:

$("#detailed").hide().html("<%= j(render('show_message', :message => @message)) %>").fadeIn('fast'); 

如果有人打开详细视图,我将消息的未读状态更新为false。如果有人将消息加载到细节中,我想重新加载部分概述。一种解决方案是只使用jQuery来移动东西,但随着更多的过滤选项,系统将变得更加复杂。因此,重新加载概览部分将是一个更简单的解决方案。但是,如何做到这一点呢?因为我需要在网络控制器中重新加载show方法,并在消息控制器中加载show方法。

除了jQuery,最好的解决方案是什么?

回答

0

创建了一个模块,用ajax加载部分概览。