Railsアプリケーションプログラミングの勉強中です。
技術的な質問になってしまうのですがテーブルから取り出したデータを配列にし、そのデータをビューで表示させたいのですが
取り出したデータの最後のデータが配列の数だけ表示されてしまいます。たぶん単純なことだと思いますが、どのように記述すれば
いいのでしょうか?
やりたいことは以下になります。
1,表示したい内容のレコードを取り出し、id を配列にする。
2,取り出した配列(id)のレコードの氏名とニックネームを取り出しインスタンス変数に代入する。
3,配列の要素数を調べる。
4,配列の要素数だけ部分テンプレートの内容を表示するように繰り返す。
5,表示する内容は各レコードの氏名、ニックネーム。
単純に取り出したデータを順番に表示させたいだけなのですが上手くいかないのです。
です。実行したコードは以下になります。
コントローラ @customer = Customer.find_by(id: current_customer.id) --------------# ログイン中のレコード取得 eagle = @customer.nickname -----------------------------------# ログイン中のニックネーム取り出し。 customer_ids = Customer.where(sponsor1:eagle).pluck(:id) -------# ログイン中の友人のidを配列で取り出し。 @xxx = customer_ids.length ------------------------------------# 配列の要素数は6。 customer_ids.each do |v| ----------------------------------------# 友人のidを繰り返し実行。 bbb = Customer.find(v) ----------------------------------------# 友人のレコードを取得。 @f_name = bbb.family_name + bbb.given_name --------------------# 友人の氏名を変数に代入。 @n_name = bbb.nickname ----------------------------------------# 友人のニックネームを変数に代入。
部分テンプレート customer/shared/sponsor <table class="attributes"> <tr><th colspan= "3">※ユーザー氏名</th></tr> <tr><th>ユーザー氏名</th><td><%= @f_name %></td></tr> <tr><th>ニックネーム</th><td><%= @n_name %></td></tr> </table>
テンプレート <div class="table-wrapper"> <% @xxx.times do |i| %> -----------------------------------------# 要素数の数だけ部分テンプレート呼び出し。 <%= render "customer/shared/sponsor" %> -----------------------# 部分テンプレートの読み込み。 <% end %> </div>
これを実行すると配列の要素の最後の要素の表示が6つ表示されてしまいます。(前の5つの要素の分が表示されません。)
表示内容 ※ユーザー氏名 ユーザー氏名 加藤四郎 ニックネーム モモタロウ ※ユーザー氏名 ユーザー氏名 加藤四郎 ニックネーム モモタロウ ※ユーザー氏名 ユーザー氏名 加藤四郎 ニックネーム モモタロウ ※ユーザー氏名 ユーザー氏名 加藤四郎 ニックネーム モモタロウ ※ユーザー氏名 ユーザー氏名 加藤四郎 ニックネーム モモタロウ ※ユーザー氏名 ユーザー氏名 加藤四郎 ニックネーム モモタロウ
たぶん以下の部分を全て実行した後でデータがテンプレートに送られているためだと思いますが、1つ取り出したら
テンプレートを読み込んで表示させ、その後次の要素のデータを取得して表示させ・・・みたいに読み込ませるには
どのように記述したらいいのでしょうか?どなたか教えてください。宜しくお願いします。
customer_ids.each do |v| ----------------------------------------# 友人のidを繰り返し実行。 bbb = Customer.find(v) ----------------------------------------# 友人のレコードを取得。 @f_name = bbb.family_name + bbb.given_name --------------------# 友人の氏名を変数に代入。 @n_name = bbb.nickname ----------------------------------------# 友人のニックネームを変数に代入。
追記:
上記コードの最後に「テンプレートを読み込みなさい」みたいなコードなどがあれば記述すればいいとは思うのですが
そんな都合のいいコードが存在するのかわからないので教えてください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。