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

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

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

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

Ruby on Rails

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

Q&A

1回答

1734閲覧

【Ruby on rails】履修者一覧ページを作成したい(履修登録アプリ)

tkcypher

総合スコア18

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/09/27 09:55

###前提
授業の履修登録アプリケーションを作っています。
user => 学生
lesson => 授業
take => 履修登録

DB設計↓
イメージ説明
ルーティング↓
イメージ説明
イメージ説明

###実現したいこと
その授業の履修者一覧を単独ページとして作成したい。

###発生している問題
・ルーティングの書き方
・each文にどう書いたらよいか
がわからない状態。

###試したこと
・とりあえず履修者一覧のviewを作成してみた。(以下該当ソースコード参照)

###該当のソースコード
とりあえずtaker.html.erbとして以下を作成してみました。

Ruby

1<h1>履修者一覧</h1> 2<table> 3 <thead> 4 <tr> 5 <th></th> 6 <th>名前</th> 7 <th>ユーザーネーム</th> 8 </tr> 9 </thead> 10 11 <tbody> 12 <% @lesson.takes.users.each do |user| %> 13 <tr> 14 <td> 15 <% if user.image.present? %> 16 <%= link_to user_path(user) do %> 17 <%= image_tag user.image.url %> 18 <% end %> 19 <% else %> 20 <%= link_to user_path(user) do %> 21 <%= image_tag "/assets/no_image.png" %> 22 <% end %> 23 <% end %> 24 </td> 25 <td><%= link_to user.name, user_path(user) %></td> 26 <td>@<%= link_to user.username, user_path(user) %></td> 27 </tr> 28 <% end %> 29 </tbody> 30 31</table>

###補足情報(言語/FW/ツール等のバージョンなど)
ruby 2.3.4p301 (2017-03-30 revision 58214) [i386-linux-gnu]
Rails 5.1.4

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

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

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

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

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

guest

回答1

0

まず、学生(user)と授業(lesson)は多対多の関係ですよね?

ですので、これをモデルで表現すると、関係性は以下のようになります。
(拾った画像なのでモデル名は適当です。interests→lessonと脳内変換してください)

イメージ説明

この図でいくと、interests_usersが学生と授業の関係性を表す「中間テーブル」と呼ばれます。
この中間テーブルを見ると、授業とっている学生の一覧と、逆に、学生がとっている授業の一覧が取得できます。

まずはモデルを作成し直して、適切なリレーションを設定してください。

投稿2017/09/28 09:21

編集2017/09/28 09:22
mtdsnsk

総合スコア789

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問