Ruby 循环三个实体的算法

Ruby 循环三个实体的算法,ruby,loops,Ruby,Loops,我在Ruby中生成一个要推送到GAMS包含文件的循环时遇到了问题。它应该显示所有i和j,i的c(i,j)向量的每个元组。e Parameter c(i,j) / c('i1','j1')=[value]; c('i1','j2')=[value]; . . . c('iI','jJ')=[value]; / 问题是,有三个实体可以从中获取数据,因此我很难确定仓库和客户机之间的距离。这是迄今为止的循环: printf(f, "Parameter c(i,j) / \n") @warehouses

我在Ruby中生成一个要推送到GAMS包含文件的循环时遇到了问题。它应该显示所有i和j,i的c(i,j)向量的每个元组。e

Parameter c(i,j) /
c('i1','j1')=[value];
c('i1','j2')=[value];
.
.
.
c('iI','jJ')=[value];
/
问题是,有三个实体可以从中获取数据,因此我很难确定仓库和客户机之间的距离。这是迄今为止的循环:

printf(f, "Parameter c(i,j) / \n")
@warehouses.each { |wh| printf(f, "c('i" + wh.id.to_s + "',") +
@clients.each { |cl| printf(f, "'j" + cl.id.to_s + "')=") +
@transquans.distance.to_s(@warehouses, @clients) + "; \n"
}
}
其背后的结构已上载

返回的错误消息如下:“nil:NilClass的未定义方法'distance'”

现在已经解决了

printf(f, "Parameter c(i,j) / \n")
@warehouses.each do |wh|
  @clients.each do |cl|
    transquan = Transquan.where(:warehouse_id => wh.id, :client_id => cl.id).first
    if transquan.nil?
    else
      printf(f, "c('i" + wh.id.to_s + "' , 'j" + cl.id.to_s + "')=" + transquan.distance.to_s + ";\n")
    end
  end
end

这意味着其中一个循环的
@transquans
nil
。在哪里以及如何设置?我通过脚手架创建模型,没有太多手动更改。用户可以在应用程序中使用距离和量程的整数值手动设置量程。