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

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

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

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

Q&A

1回答

495閲覧

Railsで複数のモデルをごっちゃに一覧表示することってできるのでしょうか?

rails1

総合スコア18

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/03/21 11:07

ご閲覧いただきまして、ありがとうございます。
表題の通り、ざっくりとした質問になってしまって恐縮です。

二つ以上のモデル、ユーザー一覧(User)と、その他のプロジェクト一覧(Project)を同タイムラインで時系列順に表示したいと考えているのですが、そういうことは可能なのでしょうか?
ユーザーのサムネイル、ユーザーのサムネイル、プロジェクトのサムネイル、ユーザーのサムネイルといったような具合で一覧表示されるイメージです。

例えば、通知などでも「友達申請が届いています」、「いいね!されました」など違う情報を同じように表示することはできますよね。こういうことは実際、Railsで実装することはできるのでしょうか。

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

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

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

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

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

guest

回答1

0

Railsをゴリゴリ書いている訳ではないので, 解決策の1つとして受け取っていただければ恐縮です。

結論から申し上げますと, 可能です。

次のようなMVCモデルがあったとして話を進めていきます。
img
ここで, PreviewコントローラはUserモデルとProjectモデルから情報を受け取り, @usersと@projectsというインスタンスを生成します。

これらのインスタンスを用いることで, Projectビューで両方のデータを参照することができます。

擬似コードは次のとおりです。

ruby

1# app/controllers/previews_controller.rb 2class PreviewController < ApplicationController 3 # ~~ 略 ~~ 4 def index 5 @users = User.all 6 @projects = Project.all 7 end 8 # ~~ 略 ~~ 9end

html

1<!-- app/views/previews/index.html.erb --> 2<h1>Users</h1> 3<ul> 4 <% @users.each do |user| %> 5 <li><%= user.name %></li> 6 <% end %> 7</ul> 8<h1>Projects</h1> 9<ul> 10 <% @projects.each do |project| %> 11 <li><%= project.name %></li> 12 <% end %> 13</ul>

投稿2019/03/21 12:46

編集2019/03/23 07:19
task4233

総合スコア106

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

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

rails1

2019/03/21 20:28

> task4233さん ご回答いただきまして、ありがとうございます。 詳しくて、非常に助かりました。 これですと、Userの名前が表示された後に、Projectの名前が表示されてしまいますよね。 そうではなく、更新された順にUserの名前とProjectの名前をごっちゃに表示したいと考えています。 (ユーザー名) (ユーザー名) (プロジェクト名) (ユーザー名) (プロジェクト名) といったような具合です。これは可能なのでしょうか?
task4233

2019/03/23 07:17

> rails 1さん 返信が遅くなり申し訳ありません。 インスタンス変数は取得できているので, 表示すること自体は可能であるはずです。 ただし, 表示すると言えど何らかの基準で表示するはずです。 したがって, 「どのような基準で表示するのか」をハッキリさせる必要があると思います。 例えば, プロジェクトごとにプロジェクト名およびそのプロジェクトに属する人の名前を表示したいとします。 その場合は `belongs_to` 句を用いてProjectモデルとUserモデルに関係を持たせてやれば, `@projects.users.name` のようにアクセスができるようになり, 次のように記述できるはずです。 ```html // app/views/preview.html.erb <% @projects.each do |project| %> <h1><%= project.name %></h1> <ul> <% project.users do |user| %> <li><%= user.name %></li> <% end %> </ul> <% end %> ``` この実装例に関しては, Rails Tutorialに似たものがあるので目を通すと良いかもしれません。 https://railstutorial.jp/chapters/user-microposts?version=4.0 また, それ以外の基準で表示したい場合でも, それはRailsというよりもRubyの実装の問題になってくるはずです(既にインスタンス変数は取得できているため)。 それなので, Rubyで複数の配列を同時にループさせる方法について調べてみると良いかもしれません(私は調べていないので, 求めている解答が得られるかは分かりかねますが......)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問