Ruby on rails 如何进行双重迭代
我们有课程表。在Ruby on rails 如何进行双重迭代,ruby-on-rails,ruby,Ruby On Rails,Ruby,我们有课程表。在@appointment\u monday中,我们有不同的约会,属于特定的类别: 当然可以,@预约。每个都不起作用。它将产生如下结果: 因为某个类别的某些约会可能是空的。我们试图通过@类别来判断每个约会,但结果如下: <% @appointments.each do |appointment| %> <% @categories.each do |category| %> <% if appoint
@appointment\u monday
中,我们有不同的约会
,属于特定的类别
:
当然可以,@预约。每个
都不起作用。它将产生如下结果:
因为某个类别的某些约会可能是空的。我们试图通过@类别
来判断每个约会
,但结果如下:
<% @appointments.each do |appointment| %>
<% @categories.each do |category| %>
<% if appointment.category == category %>
<%= appointment %>
<% else %>
placeholder
<% end %>
<% end %>
<% end %>
占位符
我认为问题在于
@类别。每次都是循环的。我们应该如何处理这一问题?与其在约会和类别上循环,不如只在类别上迭代一次(因为您想为每个类别输出一些内容,不管它是否有约会),然后检查是否存在该类别的约会:
<% @categories.each do |category| %>
<% category_appointments = @appointments.select {|a| a.category == category } %>
<% if category_appointments.empty? %>
<%= placeholder %>
<% else %>
<%= category_appointments %>
<% end %>
<% end %>
select
是一种包含在Array
中的方法 你能告诉我们想要的产量吗?是第一个图吗?@Daiku是的,第一个。然后我想你只需要切换你的内部和外部迭代器。但是Carol的答案可能更有效,因为测试类别是否匹配的是C语言,而不是ruby语言。它确实有效。但我仍然觉得这个方法很反直觉。是否可以使用@约会
?我觉得这就是一张桌子应该被填满的方式。哦,我想知道我是否误解了这个问题。您正在填写表格的单元格,该行用于@appointment
中的所有约会
对象集,列用于每个类别
,对吗?我认为这更像是“让我们访问该行中的每个单元格,看看是否有任何内容属于此处”,而不是“让我们将所有约会放在它们所属的单元格中”。这有用吗?我真的不知道你为什么要重复@Appoints,你能详细说明一下,如果这听起来像是我的误解吗?