Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(RubyonRails)在服务器数据更新之后,如何使用jquery/ajax以最快的方式从部分加载/显示特定的div?_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

(RubyonRails)在服务器数据更新之后,如何使用jquery/ajax以最快的方式从部分加载/显示特定的div?

(RubyonRails)在服务器数据更新之后,如何使用jquery/ajax以最快的方式从部分加载/显示特定的div?,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,为了清楚起见,我将显示所有相关的代码文件,以使问题更清楚。我正在用表单编辑分部中的特定div,只想显示新更新的div 我在记分板上有这个div#show: <div class="all-schedules"> <%= render 'schedules/schedules' %> </div> 单击编辑按钮,将触发以下文件(edit.js.erb): $("#schedule_<%=@schedule.id%>").hide(); #

为了清楚起见,我将显示所有相关的代码文件,以使问题更清楚。我正在用表单编辑分部中的特定div,只想显示新更新的div

我在记分板上有这个div#show:

<div class="all-schedules"> 
    <%= render 'schedules/schedules' %>
</div>
单击编辑按钮,将触发以下文件(edit.js.erb):

$("#schedule_<%=@schedule.id%>").hide(); #the div being edited is hidden
$("#schedule_<%=@schedule.id%>").after("<%= j render 'scheduleedit'%>"); #this renders the edit form where the div used to be
$(“#日程安排”).hide()#正在编辑的div被隐藏
美元(“#附表”)。在(“)之后#这将呈现div以前所在的编辑表单
现在,在提交编辑表单时,我想隐藏编辑表单,然后带回带有新数据的div(
schedule
)。如果我以前使用.html()重新加载整个.all schedulesdiv,它会重置分页索引,而且由于分页是ajax,因此它会由于.html()而停止工作。我的目标是只影响特定的
#调度div
div并将其插入先前的位置,并停留在div所在的分页页面上

到目前为止,update.js.erb文件是这样的:

$("#edit_schedule_<%=@schedule.id%>").hide(); #this successfully hides the edit form 

#code needed here to re-render the `#schedule_<%=schedule.id%>` div 
#without affecting the ajax pagination and staying on the same page in the pagination index
$(“编辑日程”).hide()#这将成功隐藏编辑表单
#这里需要重新呈现`#schedule ` ` div的代码
#不影响ajax分页,并且在分页索引中保持在同一页面上

我更倾向于使用.html(),因为它比.load()快。我不知道是否还有其他方法可以让它像.html()一样快。提前谢谢

> P>您可以考虑将一个时间表的内容移至部分。 schedules/_schedule.html.erb

<div class="schedule-list" id="schedule_<%=schedule.id%>">
   # your content
</div>

#你的内容
父视图中的明细表:

<div class="all-schedules"> 
  <%= render @schedules %>
</div>

此时,您可以轻松地仅渲染需要重新加载的明细表:

update.js.erb

$("#schedule_<%=@schedule.id%>").html("<%= j render('schedules', schedule: @schedule) %>")
$(“#附表”)html(“”)

试试看,兄弟;)

哥们,这是个好办法。你是冠军。只是一件小事,在update.js.erb中应该是“schedule”而不是“schedules”。否则,这个解决方案太棒了!!!
$("#schedule_<%=@schedule.id%>").html("<%= j render('schedules', schedule: @schedule) %>")