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

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

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

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

Q&A

解決済

2回答

1725閲覧

【rails】登録した情報を表にして連番を振る方法

kazuki0714

総合スコア28

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/05/14 16:11

登録した情報を表にして連番を振りたいのですが、idが表示されて連番にならず困っています。

下記の図で、id欄の数字が飛び飛び(2,7,8,9,10)になっています。
登録情報を数件削除しているのが原因ですが、これを取得したfabric.idではなく
連番で表示させるにはどうすればよろしいでしょうか?

idの欄をfabric.idではなく1,2,3,4,5と表示させたいです。

イメージ説明

ruby

1 2<!-- app/views/fabrics/index.html.erb --> 3 4<h1>生地リスト</h1> 5<p>オリジナル生地をカテゴライズしました。</p> 6 7<div class="main posts-index"> 8 <div class="container"> 9 <% @fabrics.each do |fabric| %> 10 <div class="posts-index-item"> 11 12 <table border="1"> 13 <tr> 14 <th>id</th> 15 <th>品番</th> 16 <th>カテゴリー</th> 17 <th>ブランド</th> 18 <th></th> 19 </tr> 20 21 <tr> 22 <td><%= fabric.id %></td> <!--ここを連番で表示させたい --> 23 <td><%= fabric.number %></td> 24 <td><%= fabric.category %></td> 25 <td><%= fabric.brand %></td> 26 <td><%= link_to("詳細", "/fabrics/#{fabric.id}") %></td> 27 </tr> 28 </table> 29 30 <% end %> 31 </div> 32 <br> 33 <%= link_to("新規生地登録", "/fabrics/new") %></td> 34 35 </div>

ruby

1# app/views/controllers/fabrics_controller.rb 2 3class FabricsController < ApplicationController 4 def index # 生地リストのページ 5 @fabrics = Fabric.all 6 end 7 8 def new 9 end 10 11 def create 12 @fabric = Fabric.new(number: params[:number], category: params[:category], uchikomi: params[:uchikomi], 13 organization: params[:organization], standard: params[:standard], fabricImg: params[:fabricImg], brand: params[:brand], 14 hardness: params[:hardness], thickness: params[:thickness], glossiness: params[:glossiness]) 15 16 @fabric.save 17 redirect_to("/fabrics/#{@fabric.id}") 18 end

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

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

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

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

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

guest

回答2

0

ベストアンサー

今回はfor文でデータを順番に表示するようにされているので 、
「fabric.id」 ではなく、「それが何個目の要素か」を表示することで、
「連番で表示」を再現できます。

例えば、以下のようにすると再現できると思います。

ruby

1<% @fabrics.each_with_index do |fabric, i| %> 2 <tr> 3 <td><%= i %></td> <!--ここを連番で表示させたい --> 4 <td><%= fabric.number %></td> 5 <td><%= fabric.category %></td> 6 <td><%= fabric.brand %></td> 7 <td><%= link_to("詳細", "/fabrics/#{fabric.id}") %></td> 8 </tr> 9<% end %>

each_with_indexの使い方はこの記事とかの読んでみてください!

投稿2019/05/14 16:55

hatsu

総合スコア1809

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

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

kazuki0714

2019/05/14 17:36

ありがとうございます、できました! i+1にして0からでなく、1からスタートさせてみました!
hatsu

2019/05/14 17:41

確かに表の見た目は1からがいいですね! 解決できたようで良かったです☺️
guest

0

hatsu様にいただいたアドバイスを元にこっちでも書けました。

どちらでもいいと思うのでやりやすい方を選んでいただけたらと。

@fabrics.each.with_index(1) do |fabric, i|

【変更点】
fabrics_eachfabrics.eachに変えてindex(1)にすると表示されました。

投稿2019/05/15 04:21

kazuki0714

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問