簡體   English   中英

紅寶石中的遞增字母

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM