質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1691閲覧

(ruby)基礎的な繰り返し処理と回数を指定してテーブルを区切る方法について

widget11

総合スコア221

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/09/11 17:24

railsのerbファイルで多次元配列からn回取り出したらテーブルに区切りを付けるということをしたいです。
少し言葉で説明することが難しいのですが、、、以下のようにtablesという変数に2次元配列が代入されておりeachメソッドで回してみると。

<table> <!-- th要素は省略 --> <% tables = [[1,2,3],[2,3,2],[1,3,2],[2,3,1],[2,3,1],[3,3,1]] %> <% tables.each do |table| %> <tr> <td> <%= table[0] %> </td> <td> <%= table[1] %> </td> <td> <%= table[2] %> </td> </tr> <% end %> </table>

このままですと多重配列の要素を一つ取り出して表示ということを繰り返すだけなため、
1 2 3
2 3 2
1 3 2
2 3 1
2 3 1
3 3 1
というテーブルができると思います。
しかしやりたいこととしては、例えば下のように3回取り出したら区切りを付けるということをしたいです。
1 2 3
2 3 2
1 3 2

2 3 1
2 3 1
3 3 1

繰り返し処理が苦手でtimesメソッドやfor文等考えたのですが頭が足りないのかロジックが思いつかず。。。
どうすれば回数を指定してテーブルを区切ることができるでしょうか。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

愚直にeach_with_indexを用いる方法

rb

1<table> 2<!-- th要素は省略 --> 3<% tables = [[1,2,3],[2,3,2],[1,3,2],[2,3,1],[2,3,1],[3,3,1]] %> 4 <% tables.each_with_index do |table, ix| %> 5 <% if ix % 3 == 0 %> 6         <tbody> 7 <% end %> 8 <tr> 9 <td> 10 <%= table[0] %> 11 </td> 12 <td> 13 <%= table[1] %> 14 </td> 15 <td> 16 <%= table[2] %> 17 </td> 18 19 </tr> 20 <% if % 3 == 2 %> 21 </tbody> 22 <% end %> 23 <% end %> 24 <% unless tables.size % 3 == 0 %> 25 </tbody> 26 <% end %> 27</table>

each_sliceを用いる方法

rb

1<table> 2<!-- th要素は省略 --> 3<% tables = [[1,2,3],[2,3,2],[1,3,2],[2,3,1],[2,3,1],[3,3,1]] %> 4 <% tables.each_slice(3) do |*table3| %> 5 <tbody> 6 <% table3.each do |table| %> 7 <tr> 8 <td> 9 <%= table[0] %> 10 </td> 11 <td> 12 <%= table[1] %> 13 </td> 14 <td> 15 <%= table[2] %> 16 </td> 17 18 </tr> 19 <% end %> 20 </tbody> 21 <% end %> 22</table>

投稿2018/09/11 22:28

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

widget11

2018/09/13 16:27

ご返信が遅くなり申し訳ございません!無事解決しました! each_sliceメソッドリファレンス少ないんですねー。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問