Railsを何人かに教えていて、配列の取り出し方が怪しいのではないかと思えたので
勉強会資料として書きます。
配列というのはデータを複数入れることができるものです。
例えば@basic1 = [1, 2, 4, 8, 16, 32]
この時、複数入った中身を取り出すには
number = @basic1[0]
のように書く。
[0]
というのがインデックス番号になって、0番目から始まります
今回の場合なら
0番目が1
、1番目が2
、2番目が4
、3番目が8
、4番目が16
、5番目が32
となります。
ビューに表示するときは例えば
<h1>基本1</h1>
<div>
<h2>basic1</h2>
<% @basic1.each do |b| %>
<%= b %><br>
<% end %>
</div>
/sample-blog/app/controllers/users_controller.rb
def basic1
@basic1 = [1, 2, 4, 8, 16, 32]
end
同じパターンで
/sample-blog/app/controllers/users_controller.rb
def basic1
@basic2 = ["aaa", "bbb", "ccc", "ddd"]
end
<h2>basic2</h2>
<div>
<% @basic2.each do |b| %>
<%= b %><br>
<% end %>
</div>
配列の中に配列
少し複雑な場合
def basic1
@basic3 = [[1, 2, 3],[3, 4, 5]]
end
<h2>basic3</h2>
<div>
<% @basic3.each do |basic| %>
<p><%= basic %></p>
<% end %>
</div>
繰り返し1回目はindexが1繰り返し2回目はインデックスが1
indexが0
のところは[1, 2, 3]
1のところは[3, 4, 5]
今度は全部表示させたい(取り出したい)場合
<h2>basic3-2</h2>
<div>
<% @basic3.each do |basic| %>
<% basic.each do |b| %>
<%= b %><br>
<% end %>
<% end %>
</div>
eachの繰り返しの中にeachがあります。
1回目のループでbasic = [1, 2, 3]
が取り出されるのでこれをさらにループにかけると1
2
3
2回目のループでbasic = [3, 4, 5]
が取り出されるのでこれをさらにループにかけると3
4
5
と中身を取り出すことができます。
配列の中にハッシュ
@basic5 = [
{name: "佐藤", mail: "satho@gmail.com"},
{name: "田中", mail: "tanaka@yahoo.co.jp"}
]
一つ目の要素が{name: "佐藤", mail: "satho@gmail.com"}
二つ目の要素が{name: "田中", mail: "tanaka@yahoo.co.jp"}
以下のように取り出すことができます。
<h2>basic5-1</h2>
<div>
<% @basic5.each do |b| %>
<p><%= b[:name] %></p>
<p><%= b[:mail] %></p>
<% end %>
</div>
<h2>basic5-2</h2>
<div>
<p><%= @basic5[0][:name] %></p>
<p><%= @basic5[1][:mail] %></p>
</div>
こんな感じで取り出すことができます。