0

我正在使用rails中的axlsx,我希望能够根据集合中的元素数量设置列:

在我的控制器中:

 @task_categories = TaskCategories.all

在我的 xlsx.axlsx 视图中,我想做类似的事情:

 sheet.merge_cells("I2:#{'I'.next(@task_categories.count)}2")

但我没有明确转换为数组错误。

我可以编写一个循环.nextby的助手count,但似乎这是一个足够常见的问题,应该有一个我只是缺少的内置快捷方式。

编辑:

我写了一个有用的助手:

def increment_letter(l, c)
  (1..c).map { l = l.next }
  l
end

打电话:

 sheet.merge_cells("I2:#{increment_letter('I', @task_categories.count)}2")

但我仍在寻找 The Rails Way™。

4

2 回答 2

1

这看起来像一个引用问题

"I2:#{'I'.next(@task_categories.count)}2"

'请注意我在您的周围使用单引号I

%Q{...}否则,如果这对您来说更具可读性,您也可以使用

%Q{I2:#{"I".next(@task_categories.count)}2}

最后,String#next不接受参数,所以你最终会得到这样的东西

%Q{I2:#{"I".next}2} #=> "I2:J2"
于 2015-08-26T16:44:42.173 回答
0

我不确定我是否理解,但这样的事情可能会做你想要的:

first_col = "I"
last_col = first_col
@task_categories.count.times { last_col = last_col.next }
sheet.merge_cells("#{first_col}2:#{last_col}2")
于 2015-08-26T16:55:15.033 回答