RAILS自动刷新部分

我有一个带有动作节目的控制器事件:

def show @event = Event.get(params[:id]) if !connected? || !@event return redirect_to request.referrer || root_path end @requests = @event.get_requests end 

在视图show.html.erb我有

  $(document).ready( function() { setInterval(function() { $('#requests').load('/events/reload_requests'); }, 2000); });  ... 
...

javascript函数调用控制器方法events / reload_requests

 def reload_requests @requests = @event.get_requests render partial: 'events/requests' end 

部分_requests.html.erb的内容:

  

...

问题:javascript函数在div #requests中加载我的show.html.erb页面的所有内容,但在div中的show.html.erb副本中,它正确刷新div #request: 在此输入图像描述你可以看到,在show#requests中我有show的内容。 比你

重新阅读你的问题后,我想我理解你的问题。

当您调用#load方法时,返回的HTML实际上是您的整个show.html.erb模板..它将插入到您的$('#requests')元素中。 那是对的吗?

在jQuery文档中,您可以在以下位置找到以下内容: http : //api.jquery.com/load/

加载页面碎片

与$ .get()不同,.load()方法允许我们指定要插入的远程文档的一部分。 (……)

$(“#result”)。load(“ajax / test.html #fragment”);

也许如果您修改脚本标记如下:

  

您只能插入您感兴趣的HTML片段。

如果那不是你的问题,请告诉我。

此外,如果您对'event/reload_requests'请求返回show.html.erb模板,则可能会错误地将event/reload_requests端点路由到您的#show操作。

编辑#1

解决嵌套div问题最简洁的方法似乎是从那里添加一个容器div并加载:

 $('#requestsContainer').load('/events/reload_requests #requests'); 

HTML:

 
<%= render partial: 'requests' %>