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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

解決済

2回答

1045閲覧

Railsでコントローラでのモデル情報取得方法

Kochan

総合スコア56

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/08/07 15:40

osusume, novel. commentの3つのモデルがあり、
osusumeとnovelが1対多、
novelとcommentが1対多という関係になっています。

現在はosusumes#showで
1つのosusumeに紐づく全てのnovelを取得しています。

ruby

1 def show 2 @osusume = Osusume.where(:id => params[:id]).first 3 4 # postgreSQLでlikeがnilのレコードを後にしたいので以下のように実装しています 5 @novels_like_not_null = @osusume.novels.where.not(like: nil).order(like: :DESC) 6 @novels_like_null = @osusume.novels.where(like: nil) 7 @novels = @novels_like_not_null+@novels_like_null 8 9 @novel = Novel.new 10 end

ここで個別のnovelに紐づくcommentを取得、表示する方法がわかりませんでした。

どうかご教示お願いいたします。
以下、モデルの情報となります。

ruby

1class Osusume < ApplicationRecord 2 has_many :novels 3end

ruby

1class Novel < ApplicationRecord 2 belongs_to :osusume 3 has_many :comments 4end

ruby

1class Comment < ApplicationRecord 2 belongs_to :novel 3end

他、必要な情報がありましたらおっしゃってください。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

複数入ってくるnovelをeachで回して、
その中でさらにcommentをeachで回すことによって
表示することができました。

ありがとうございます!

haml

1 2 #novel-cards 3 - @novels.each.with_index(1) do |novel, index| 4 - novel.comments.each do |comment| 5 = comment.comment

投稿2018/08/07 16:48

Kochan

総合スコア56

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

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

0

ベストアンサー

Noel は has_many :comments
となっているので、 nvel.comments とすると、 novel に紐付いている comment を取得できます。

次のページの説明を読むと良いです。

  • Active Record の関連付け (アソシエーション)

https://railsguides.jp/association_basics.html

...
このガイドの内容:
Active Recordのモデル同士の関連付けを宣言する方法
Active Recordのモデルを関連付けるさまざまな方法
関連付けを作成すると自動的に追加されるメソッドの使用方法
...

投稿2018/08/07 15:48

katoy

総合スコア22324

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

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

Kochan

2018/08/07 16:20

迅速なご回答ありがとうございます! 今回は @novelsの中に複数のnovelのデータが入っているのですが、 それぞれに紐付けた形で個別に取得して 個別にviewの方で展開することはできるのでしょうか。。? @novelsの中に@novel1, @novel2......と入っていて、 viewの方で @novel1.comments @novel2.comments のような形で使いたいと思っています。
katoy

2018/08/07 16:40

@novel1 = @novels.first @novel1 = @novels.second とすれば、 @novel1.comments @novel2.comments とできます。
Kochan

2018/08/07 16:46

ご回答ありがとうございます!!! できました!!! 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問