こんちは!
今日はrails上で二次元配列の格納方法を記載します。
理由
この内容が容易に見当たらなかったため、他の方の助けになればと思います。
一次元配列の格納方法
イメージとしては、[1,2,3,4,5,6]
という風に格納したい場合、railsではコントローラーに以下のように記載するとできます。
tests_contoroller.rb
def idex
@test = [] #配列の宣言
6.times do |i = 0| #6回読み込ませる、そしてiには0を格納している。iは初期化式
@test[i] = i + 1 #初期化式で宣言したiに1足した数字を各配列に代入している。
i += 1 #iに1を足してはじめに戻る。何もしないままはじめに戻ると同じ配列[0]を六回繰り返すだけだから
end
# 配列[i]になぜ1を足さないかは、配列の初期値は[0]だから
二次元配列の格納方法
次は二次元配列です。
イメージとしては[[1,1],[2,1],[3,1]]
と格納したい場合は以下の通りになります。
tests_contoroller.rb
def idex
@test = [] #配列の宣言
3.times do |i = 0| #3回読み込ませる、そしてiには0を格納している。iは初期化式
@test[i] = [i + 1,1]
i += 1
end
@test[i] ←の部分は、一緒です。
その配列の中に、さらに配列を入れるイメージです。
|1|1|
|2|1|
|3|1|
これを使った応用で、以下のようなコードが表示が実現できます。
<select name="exp_year" id="exp_year"><option value="">--</option>
<option value="2020">20</option>
<option value="2021">21</option>
<option value="2022">22</option>
<option value="2023">23</option>
<option value="2024">24</option>
<option value="2025">25</option>
<option value="2026">26</option>
<option value="2027">27</option>
<option value="2028">28</option>
<option value="2029">29</option>
<option value="2030">30</option></select>
HTML上表示したいものは、1つめの配列に格納されています。
valueの値は、2つめに格納したものがです。
格納例としては、以下の通り
|20|2020|
|21|2021|
|22|2022|
|23|2023|
これらは以下のコードをコントローラー側に入力すると、vew側で表示でます。
tests_controller.rb
def index
year = 2020
@year = []
11.times do |i = 0|
@year[i] = [year - 2000,year]
year += 1
i += 1
end
end
vewには以下の一文追加してね。
tests/test.html.haml
= select_tag 'exp_year',options_for_select((@year),class: "exp_year"),prompt: "--"
追加したら以下のように見れるはずです。(CSSは適当に付けてみるとよいでしょう)
以上です!
またこう言った、見当たらなかったものをあり次第、アップしていきます!
ほなねー。