Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 基于表值的ruby迭代 该项目:_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 基于表值的ruby迭代 该项目:

Ruby on rails 基于表值的ruby迭代 该项目:,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在创建一个动态报告系统 指标定义了报告数据的用途。例如: “13起房屋火灾。” 管理员将通过一个表格将“房屋火灾”定义为一个指标,记者只需通过另一个表格添加“13” 但是,还有另一个级别:我希望报告在连接的数据点之间是详细的: “一月份发生13起影响42人(或16个家庭)的房屋火灾” 详细信息存储在表“metrics”中,数据存储在表“metrics\u data”中 以下是上面示例中的度量表: metric_id | parentID | childID | prefix |

我正在创建一个动态报告系统

指标定义了报告数据的用途。例如:

“13起房屋火灾。”

管理员将通过一个表格将“房屋火灾”定义为一个指标,记者只需通过另一个表格添加“13”

但是,还有另一个级别:我希望报告在连接的数据点之间是详细的:

“一月份发生13起影响42人(或16个家庭)的房屋火灾”

详细信息存储在表“metrics”中,数据存储在表“metrics\u data”中

以下是上面示例中的度量表:

metric_id | parentID | childID | prefix       | suffix      | program_id
    1     |     1    |   1     |              | house fires |    1
    2     |     1    |   2     | during       |             |    1
    3     |     1    |   3     | affecting    | individuals |    1
    4     |     1    |   4     | (or          | families    |    1
基于句子的组织的关键是parentID-childID关系

以下是metrics_数据表:

metric_id | value |     date
    1     |  13   |   01/01/12
    2     |  nil  |   01/01/12
    3     |  42   |   01/01/12
    4     |  16   |   01/01/12
目标是: 我想组织视图(通过parentID循环)以详细显示度量:

计划#1

(家长ID:1):“#在(日期)影响#个人(或#家庭)的房屋火灾”

(家长ID:2):“#在(日期)期间提供住宿#过夜(针对#个人)”

计划#2

(家长ID:1):“#在(日期)期间招募的新志愿者”

(家长ID:2):“#志愿者服务时间#在(日期)#

守则:
类程序
部分_program.html.erb(对于programs/index.html.erb):


#我如何根据parentID(按childID排序)在这里循环?
#

我知道我可以将其拆分为一个单独的表,并在两个表之间定义parentID和childID之间的关系,但添加另一个关系层似乎过于复杂。

您可能应该将“parent”和“child”元素视为度量的属性,而不是尝试重用同一个模型。另一种方法是创建另一个称为“事件”的模型,这些事件与程序相关,度量与事件相关。我可能还会创建一个“度量类型”,而不是将前缀或后缀直接与每个记录关联

我认为,试图在同一级别上处理所有度量,并尝试使用parentID和childID循环它们来创建一个句子,这比仅仅在关系中添加另一层要复杂得多


希望这已经足够了……

您可能应该将“父”和“子”元素视为度量的属性,而不是尝试重用同一个模型。另一种方法是创建另一个称为“事件”的模型,这些事件与程序相关,度量与事件相关。我可能还会创建一个“度量类型”,而不是将前缀或后缀直接与每个记录关联

我认为,试图在同一级别上处理所有度量,并尝试使用parentID和childID循环它们来创建一个句子,这比仅仅在关系中添加另一层要复杂得多


希望这已经足够了……

好吧。我想可能有一个简单的解决办法。我会继续你的选择。谢谢@Vox.好的。我想可能有一个简单的解决办法。我会继续你的选择。谢谢@Vox。
class Program < ActiveRecord::Base
  has_many :programs_metrics
  has_many :metrics, through: :programs_metrics
end

class Metric < ActiveRecord::Base
  has_many :programs_metrics
  has_many :metrics, through: :programs_metrics
end
<% program.metrics.each do |metrics| %>
  <div class="row offset1">
   <% program.metrics.each do |pid| %> #how do I loop here based on parentID, sorted by childID?
     <%= pid.prefix %>
     #
     <%= pid.suffix %>
    <% end %>
  </div>
<% end %>