On Rails 4.我试图用Bootstrap做一个复杂的嵌套每个循环。
我有模型用户,组织和提交。提交属于用户和组织 - 当前用户创建新提交并将其分配给组织(因此,提交的属性为:user_id
和:organization_id
)。
我制作了一个小图片来说明我在提交索引视图中尝试做的事情:
列出所有当前用户的提交内容:
基本上,我需要找到当前用户已分配提交的每个组织/年,然后在该标题内,对属于同一组织/年的每个当前用户提交进行分组。
为了使用Bootstrap获取此格式,我需要.in_groups_of(3, false)
语句(除非有人可以告诉我有关不同的内容)<div class="col-md-4">
布局。以下是我在提交索引视图中的当前代码,该代码未按预期工作:
# find all submissions made by the current user, group by the
# submission's :contest_year and :organization_id attributes:
<% current_user.submissions.group([:contest_year, :organization_id]).each do |contest| %>
<h2><%= contest.contest_year %>: <%= contest.organization.name %></h2>
# here is where it fails, it is finding all the submissions made by the user
# instead of just the submissions that belong under the
# specified contest_year/organization_id heading from above.
# I know I need 'contest' involved in here
<% current_user.submissions.in_groups_of(3, false).each do |group| %>
<div class="row">
<% group.each do |submission| %>
<div class="col-md-4">
# submission information here
</div>
<% end %>
</div><br/>
<% end %>
<% end %>
此代码返回类似的内容:
我希望所有这一切都有道理。那么,我如何修复嵌套循环,使其行为类似于第一个图像。非常感谢。部分提交模型/控制器:
Submission.rb
belongs_to :user
belongs_to :organization
submissions_controller.rb
def index
@submissions = Submission.all
end
答案 0 :(得分:0)
您希望按组织缩小对current_user.submissions的第二次调用。而不是:
current_user.submissions.in_groups_of(3, false).each do |group|
你想要的东西:
current_user.submissions.where(organization_id: contest.organization.id).in_groups_of(3, false).each do |group|
你可能会这样做:
current_user.submissions.where(organization: contest.organization).in_groups_of(3, false).each do |group|