[英]Incrementing Letters in ruby
我正在使用railsx中的axlsx,我希望能夠根據集合中元素的數量來設置列:
在我的控制器中:
@task_categories = TaskCategories.all
在我的xlsx.axlsx視圖中,我想執行以下操作:
sheet.merge_cells("I2:#{'I'.next(@task_categories.count)}2")
但是我沒有明確轉換為數組錯誤。
我可以編寫一個幫助程序,通過count
循環.next
,但是似乎這是一個很常見的問題,應該有一個我所缺少的內置快捷方式。
編輯:
我寫了一個工作的助手:
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™。
這看起來像是一個報價問題
"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"
我不確定我是否了解,但是類似這樣的事情可能會滿足您的要求:
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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.