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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

3168閲覧

rails:多対多のテーブルデータの取得方法

pappi

総合スコア6

Ruby

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/04/20 12:00

編集2017/04/20 23:05

以下のようなTag-Service-Categoryが関連しているテーブルにて、
tag/show/html.erbページでServiceのCategory情報を取得したい。

ruby

1class Tag < ActiveRecord::Base 2 has_many :service_tags 3 has_many :services, through: :service_tags 4end

ruby

1 2class ServiceTag < ActiveRecord::Base 3 belongs_to :service 4 belongs_to :tag 5end

ruby

1 2class Service < ActiveRecord::Base 3 has_many :service_tags 4 has_many :tags, through: :service_tags 5 has_many :service_categories 6 has_many :categories, through: :service_categories 7end

ruby

1class ServiceCategory < ActiveRecord::Base 2 belongs_to :service 3 belongs_to :category 4end 5

ruby

1class Category < ActiveRecord::Base 2 has_many :service_categories 3 has_many :services, through: :service_categories 4end

上記状態でviewでServiceをeachで表示しつつ、各ServiceのCategoryを表示したいです。
現在は以下のように取得しておりますが、正常に表示ができておりません。

tag/show.html.erb

ruby

1<% @tag.services.each do |service| %> 2 <% service.categories.each do |category| %> 3 <span class="category" class="<%= category.id %>"><%= category.name %></span> 4 <% end %> 5<% end %> 6

@tag=Tag.find params[:id]

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

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

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

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

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

moke

2017/04/21 04:34

表示されているコードに問題は無いようです。データは正しく登録されていますか?期待する表示と実際の表示を晒してくださいできれば、DBのレコードもお願いします。
guest

回答1

0

まだ改善していなかったら
@tag=Tag.find params[:id]で
@tagの中に取得したいものが入っているのか確認してください。

@tag=Tag.find params[:id]が書いてあるControllerの中で
binding.pryと書いて保存してブラウザを更新
terminalでサーバー開いてる所に行ったらreplみたいがなのができています。

ruby

1@tag.first #とかで欲しい値が入っているか確認してください 2#もし入っていなかったら@tagの中に値が入っていないか@tagの定義が間違っています 3 4#次に 5@tag.service.all.to_a #とかで欲しい値が入っているか確認してください(件数が多すぎる場合はlimitとかで絞ってください) 6 7service_first = @tag.service.first 8service_first. categories #欲しいものが入っているか確認してください 9#ここまでで取れなかったデータがあれば、そこのアソシエーションが間違っています 10#取れていたらビューの記述が間違っています

確認してみてください!

投稿2017/05/02 02:18

drizzing20

総合スコア363

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問