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

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

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

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

Ruby on Rails 4

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

Q&A

解決済

2回答

231閲覧

Rails4でサブカテゴリーを設定したい

abab7200

総合スコア120

Ruby

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

Ruby on Rails 4

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

0グッド

0クリップ

投稿2017/10/23 13:29

編集2017/10/24 23:57

ArticleとCategoryの2つのmodelが設定しています。
Categoryにはサブカテゴリーを設定しており、Articleの画面でそのサブカテゴリー
を表示させたいのですが、controllerの処理のイメージがつかず、
どなたか、ご教授いただければと存じます。

ArticleとCategoryのリレーションは1対多となります。

articleカラム

id title category_id sub_category_id_1 sub_category_id_2

categoryカラム

id name

article_model

class Article < ActiveRecord::Base belongs_to :category, inverse_of: :articles end

category_model

class Category < ActiveRecord::Base has_many :articles, inverse_of: :category end

article_controller

def index @articles = Article.all.paginate(page: params[:page], per_page: 20) ここにサブカテゴリー1と2を取得する処理を記載したい end

article_index_page

- @articles.each do |article| div .category-tag = link_to article.category.name, category_path(article.category.slug), class: 'text-link'            ここにサブカテゴリー1を表示したい            ここにサブカテゴリー2を表示したい

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

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

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

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

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

guest

回答2

0

案1

単純にCategoryをfind_byする

ruby

1def index 2 @articles = Article.all.paginate(page: params[:page], per_page: 20) 3 @articles.each do | article | 4 sub_category1 = Category.find_by(id: article.sub_category_id_1) 5 sub_category2 = Category.find_by(id: article.sub_category_id_2) 6 end 7end
案2

Articleモデルにsub_categoryのRelationを追加する

ruby

1class Article < ActiveRecord::Base 2 belongs_to :category, inverse_of: :articles 3 belongs_to :sub_category1, class_name: 'Category', :foreign_key => 'sub_category_id_1' 4 belongs_to :sub_category2, class_name: 'Category', :foreign_key => 'sub_category_id_2' 5end

それでこうやって取得する

ruby

1def index 2 @articles = Article.all.paginate(page: params[:page], per_page: 20) 3 @articles.each do | article | 4 sub_category1 = article.sub_category1 5 sub_category2 = article.sub_category2 6 end 7end

投稿2017/10/25 01:06

chelsy7110

総合スコア596

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

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

0

自己解決

案2で対応できました 早急なご返信ありがとうございました

投稿2017/10/25 11:20

abab7200

総合スコア120

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問