计算和创建要在视图中显示的大表的最佳位置



基于ActiveRecord中的几个字段,我需要进行一系列计算,这将导致显示一个表(在视图中),大约有10列和15行。

我不想在视图中做这些计算,所以我考虑创建一个2D数组来存储模型中的行,然后在视图中访问这个数组来构建一个表来显示。然而,似乎我不能存储在一个模型的实例变量数组,所以我寻找关于如何最好地处理这种情况的建议?

如果有一种方法传递数组从模型到视图,这将解决我的问题。尝试过这样的东西,但没有工作,由于attr_accessor不处理数组?

xxx

模型

attr_accessor :row_hash
after_initialize do
    makeTable
end
def makeTable
    row_hash = Array.new
    for i in 1..15 do
        row_hash.push(i)
    end
end
视图

<% @xxx.row_hash.each do |r| %>
 <%= r %> 
<% end %>

row_hash填充ok在模型中,但我得到'no method defined each'在视图

我想你可以把self加到row_hash

attr_accessor :row_hash
after_initialize do
    makeTable
end
def makeTable
    self.row_hash = Array.new
    for i in 1..15 do
        self.row_hash.push(i)
    end
end

初始化row_hash = Array.new将创建一个名为row_hash的局部变量,因此您需要调用self.row_hash=才能访问实例属性写入器。

但是,在模型中这样做仍然有点奇怪,所以可能有更好的方法来处理这个问题。

我只写:

attr_accessor :rows_array
after_initialize { generate_row_arrays }
def generate_row_arrays
  self.rows_array = (1..15).to_a
end

您可能注意到我将名称从rows_hash更改为rows_array以避免混淆。我使用带下划线的名称来遵循Ruby约定。

最新更新