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' %>