0

我正在尝试在我的应用程序中实现一些 Ajax。发生了奇怪的行为!这是一个日托应用程序。当您显示特定日期的特定日托时,您可以添加一些孩子。最初会生成数据库的孩子列表,当您单击其中一个时,页面会重新加载,并且一个新孩子会出现在日托的出勤列表中。它工作正常,我只是想添加一些 ajax 来更加用户友好!

当您单击孩子将他添加到日托时,会创建一个 daycare_item(连接表、孩子的 id 和日托的 id)。

我进行了更改以使其准备好 ajax:

  • 列表的部分
  • daycare_item 控制器中的 format.js
  • 链接上的远程为真。

它工作,不再重新加载!但是只有当您在子列表上再次单击时,列表才会更新(最后一个添加的子还没有出现)。js 事务有效,如果您手动刷新页面,则会出现丢失的子项。

我尝试了几件事,这是我的结果:

在我的部分有

<% @daycare.daycare_items.each do |c| %>
  <li><%= c.child.firstname ></li>
<% end %>

这会产生一个没有显示的孩子的“滞后”效果(直到完全刷新)

但如果我放一个

<%= @daycare.daycare_items.count %>

代码及时更新!我在日志中没有看到任何奇怪的地方。我在问为什么 .each 方法会有所作为?

4

1 回答 1

0

一个 var 正在停止要执行的部分代码,该 var 没有错,也不会产生错误。

涉及的元素:daycare_items 控制器

def create
  @daycare = Daycare.find(params[:daycare_id]) # for Ajax
  @daycare_item = DaycareItem.new(params[:daycare_item])
....
end

create.js.erb

$('#children-list').html(" <%=j render partial: 'daycares/daycare', locals: { daycare: @daycare } %> ");

查看日托#show

<div id="children-list">
  <%= render @daycare %>
</div>

部分(一部分)_daycare.html.erb

<p>counting test:<%= daycare.daycare_items.count %></p>

# here was something like this <%= @waiting.count %> @waiting is define in the daycare controller but not in the daycare_items controller
<p>
  <% daycare.daycare_items.each do |dci| %>
    <%= dci.enfant.prenom %>
  <% end %>
</p>
于 2013-07-03T01:07:19.223 回答