【问题标题】:Ruby on rails display objects in a box table with columns and rows populated dynamicallyRuby on rails 在盒子表中显示对象,动态填充列和行
【发布时间】:2015-10-24 18:01:18
【问题描述】:

我有一个模型类Student,其中belongs_to 有另外两个模型(standardhouse

现在Student 对象可以通过category_id 从它所属的其他模型中唯一标识。

我想在视图中向学生展示。标准模型中的类别为 x 轴(行),房屋模型中的类别为 Y 轴(列)。一种矩阵表示。

此外,学校的标准和房屋也因学校而异。所以他们需要从数据库中填充。

是否有一些宝石可以用来简化流程。

我是一名后端开发人员,对 Jquery 和 JS 了解有限。

编辑:我只想要一种具有已定义列和行的数据网格。类对象的链接在特定框中定义。 例如:在第 1 行和第 1 列定义的框 1 中,有三个学生。由第 2 行和第 1 列定义的框 2 有 2 个学生等。(一种矩阵表示)

【问题讨论】:

    标签: jquery ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rubygems


    【解决方案1】:

    我之前遇到过这种矩阵类型的事情,我问过this question。是关于active_admin的,但是思路是一样的。

    我认为对于您面临的问题,最简单的方法是自己构建这个矩阵表。这是一个例子,我使用Slim syntax

    • 行标题是类别
    • 列标题是级别

    然后执行如下操作:

    table
      thead
        tr
          - @categories.each do |c|
            td = c.name
      tbody
        - @levels.each do |l|
          tr
            td.column-header l.name
            - @categories.each do |c|
              - intersect_students = l.students.where(category: c)
              - if intersect_students.empty?
                td
              - else
                td = intersect_students.plunk(:name).join(', ')
    

    注意:找到 intersect 有点慢。需要一些预处理逻辑来改进它。

    【讨论】:

    • 感谢您的回复。这看起来是一个很好的解决方案。但是,我遵循一种方法,首先在视图中定义表结构,然后使用来自自定义操作的 ajax json 响应用数据填充它。很快就会发布这种实现方式:)
    猜你喜欢
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2018-11-07
    相关资源
    最近更新 更多