Ruby on Rails - 嵌套循环(带Bootstrap)

时间:2014-04-15 16:43:28

标签: ruby-on-rails twitter-bootstrap nested-loops

On Rails 4.我试图用Bootstrap做一个复杂的嵌套每个循环。

我有模型用户,组织和提交。提交属于用户和组织 - 当前用户创建新提交并将其分配给组织(因此,提交的属性为:user_id:organization_id)。

我制作了一个小图片来说明我在提交索引视图中尝试做的事情:

列出所有当前用户的提交内容:

enter image description here

基本上,我需要找到当前用户已分配提交的每个组织/年,然后在该标题内,对属于同一组织/年的每个当前用户提交进行分组。

为了使用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 %>

此代码返回类似的内容:

enter image description here

我希望所有这一切都有道理。那么,我如何修复嵌套循环,使其行为类似于第一个图像。非常感谢。部分提交模型/控制器:

Submission.rb

  belongs_to :user
  belongs_to :organization

submissions_controller.rb

  def index
    @submissions = Submission.all
  end

1 个答案:

答案 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|