好吧,使用引导模态功能将一些局部变量传递给局部变量时,会发生一些奇怪的事情。
我正在表格中创建日历。每个表格单元格代表一个月中的日期。在每个单元格中都有一个按钮,其中带有该单元格的日期标记。想法是,当单击此按钮时,将打开一个模式窗口,显示有当天要完成任务的客户列表。
这是我的views/jobs/index.html.erb
<% count = 0 %>
<% 5.times do %>
<tr>
<% 7.times do %>
<td>
<% date = @calender_days[count] %>
<% client_set = create_client_set(date) %>
<%= render partial: 'day', locals: {jobs: @jobs, count: count, date: date, client_set: client_set} %>
<% client_set[0..2].each do |client| %>
<%= User.find(client).username %><br />
<% end %>
<% count += 1 %>
</td>
<% end %>
</tr>
<% end %>
这里是渲染中引用的部分内容,我的views/jobs/_day.html.erb
<button type="button" class="align-text-bottom btn btn-primary btn-xs" data-toggle="modal" data-target="#day-tasks">
<%= date.strftime('%d') %>
</button>
<div class="modal fade" id="day-tasks" tabindex="-1" role="dialog" aria-labelledby="day-tasks-Label" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="day-tasks-ModalLabel"><%= date.strftime('%m/%d') %></h4>
</div>
<div class="modal-body">
<%= count %>
<% client_set.each do |client| %>
<h5><%= User.find(client).username %></h5>
<% end %>
</div>
<div class="modal-footer">
<button type="button" class="align-text-bottom btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
现在奇怪的是:<%= date.strftime('%d') %>
可以正确评估模式顶部的按钮,其中date = @calender_days[count]
{{3}中的<%= count %>
和modal body
}。还请注意,<%= date.strftime('%m/%d') %>
中的modal-title
的计算结果是日历中的第一天。因此,偏向是通过按钮接收正确的值来获取值,但由于某种原因,模态无法获取它们。
我真的很困惑,这没有道理。预先感谢大家的帮助!
答案 0 :(得分:0)
您的问题与计数器值无关,而是您正在生成具有相同ID的不同模态,并且当您单击以打开模态时,它总是打开第一个模态,而不是属于您设置的按钮的模态,并且其值为0。
一个简单的解决方案可能只是将计数值与模式的id关联,当然也与按钮的data-target关联,因此您需要更改这两行
<button type="button" class="align-text-bottom btn btn-primary btn-xs" data-toggle="modal" data-target="#day-tasks-<%= count %>">
...
<div class="modal fade" id="day-tasks-<%= count %>" tabindex="-1" role="dialog" aria-labelledby="day-tasks-Label" aria-hidden="true">
...
或连接日期或为此目的唯一的内容。