Ruby on Railsで要素を配列、ループを使って取り出しましょう!

プログラム

配列ってよく聞くけど何でしょうか。どうやって使うの?こんな疑問を抱えたままになっていないでしょうか。
配列から要素を取り出すのはプログラムでよく使うので疑問を持ったままでは、コードを何回もかかなければなりません。

この記事を読むことで、配列とループ処理が理解できプログラミングが楽になりアプリ開発において困らなくなります。

配列とは

そもそも配列とはなんでしょうか。
配列とは、データをたくさん詰められる箱のようなものです。そしてそのデータの1つ1つが要素と言。変数は1つの箱ですが、配列は複数の箱といったイメージでしょうか。

例えば、
arrays = [“a”,”b”,”c”]
という配列においては、配列名は arrays で要素は a b c  になります。

また、この要素ひとつ1つには順番に番号がついており0から始まることに注意してください。
a → 0
b → 1
c → 2

arrays = [“a”,”b”,”c”] 
puts arrays[0] 

とすれば、結果は

a

となります。

Ruby 配列をループで取り出す

配列に入っている要素を一つずつとりだすと要素の数だけコードをかかなければなりません。

arrays = [“a”,”b”,”c”]
puts arrays[0]
puts arrays[1]
puts arrays[2]
end

3回ならいいですが、例えば100回繰り返しとなるとどうでしょう。
到底書いてはいられませんね。こんなとき繰り返して要素を取り出すことができれば大変便利です。
そんな時に使うのがeach文です。

each文

文は配列の中から一つずつ要素を取り出します。

公式
配列.each do |変数名|
処理
end

arrays = ["a","b","c"]  
arrays.each do |array| 
 puts array
end  

出力

abc

each文の他にもよくつかうものを紹介します。

while文

条件式が真である限り、処理を繰り返します。
公式:
while 条件式 do
繰り返し処理
end

i = 0
while i<7
puts i 
i += 1
end

出力

0
1 
2 
3 
4 
5 
6 

For文

eachの構文版のような形で、データに格納されているものを一つずつ取り出し、
処理を行います。
公式:
for 個別データ in 格納データ
繰り返し処理
end

lists = [a,b,c,d]
for list in lists
puts "list"
end

出力

a
b
c
d

times文

繰り返し処理の回数を規定したい時に使います。
公式:
回数.times do
繰り返し処理
end

5.times do
puts "アイウエオ" 
end

出力

アイウエオアイウエオアイウエオアイウエオアイウエオ

それでは、Ruby on Railsでループ処理を行ってみましょう。

Ruby on Railsでの配列から要素を取り出す

Ruby での確認ができましたので、Ruby on Railsで配列をループした取り出してみます。ブログアプリで記事を配列にしてすべての記事を取り出す時に使われます。
まずは、Ruby on RailsではMVCと言われるアーキテクチャーについて確認しておきましょう。

Ruby on railsのMVCとビューの役割を知ろう!

Ruby on railesのMVCとモデルの役割を知ろう!

Ruby on railsのMVCとコントローラーの役割って何?

簡単な、アプリを作り、controllerに配列を作り、viewで表示します。
loopといアプリを作って確認してみます。

>rails new loop

Loopにディレクトリーを移動してbandle install をします。

>bandle install

Controllerをつくります。
Indexアクションを持ったloop controllerを作ります。

>rails g controller loop index

routesはできているので確認しましょう。

Rails.application.routes.draw do
  get 'loop/index'
end

controllerのindexアクションの中に配列を作成します。
ここはrubyと同じですが、変数は@を付けることを忘れないようにしましょう。
要素は、a,b,cとします。

class LoopController < ApplicationController
  def index
    @arrays = ["a","b","c"]
  end
end

そうすることで配列@arrayをview のindex.html.erbへ渡します。
index.html.erbでabc配列の中をループしてa,b,cを取り出してみましょう。each文を使うのはrubyと同じです。

<% @arrays.each do|array| %>
      <%= array %>
<% end %>

では実行してみましょう。
Localhost:3000をたたくとa b cと表示されました。

まとめ

  • 配列とは
  • Ruby 配列をループで取り出す
  • Ruby on Railsでの配列から要素を取り出す

配列で複数の要素を扱かうことができます。ループで簡単に取り出すことができ、たくさんのコードを書く必要がなくなります。