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

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

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

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

Q&A

解決済

2回答

1999閲覧

Rails 一覧表示の汎化

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2014/12/02 07:27

商品カテゴリの一覧画面を作ったのですが、非常に無駄な作業だと気付きました。
商品カテゴリは第一階層で10個、第二階層で50個あります。
残り58個作るのはあまりも酷なので助けてください

lang

1#-------------------------------------------------------------------------# 2 3#view1 Top page 4<%= link_to 'メンズ', items_mens_path , { :class => 'list-group-item' } %> 5<%= link_to 'レディース', items_ladies_path , { :class => 'list-group-item' } %> 6 7#view2 カテゴリ一覧画面1(メンズ) 8<div class="page-header"> 9 <h4><%= 'メンズアイテム' %></h4> 10</div> 11<%= render 'index' %> 12 13 14 15#item controller 16 17 def mens 18 @category = Category.find_by(name: 'メンズ') 19 buf = get_all_items(@category) 20 @items = Kaminari.paginate_array(buf).page(params[:page]).per(10) 21 22 end 23 24 25 def ladies 26 @category = Category.find_by(name: 'レディース') 27 buf = get_all_items(@category) 28 @items = Kaminari.paginate_array(buf).page(params[:page]).per(10) 29 end 30 31# category 以下のすべての item を得る 32 def get_all_items(root) 33 ans = root.items 34 root.childs.each do |child| 35 ans += get_all_items(child) 36 end 37 ans 38 end 39 40 #-------------------------------------------------------------------------# 41 42テキスト

Rails4 商品カテゴリの実装について

カテゴリーをツリー構造

無限階層カテゴリの実装

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

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

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

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

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

guest

回答2

0

お手数ですが2点注文があります。

過去の質問へのリンクがあると助かります。
質問が断片的なので、初めての人が見たときに問題の解決に繋がらないように思います。

可能であればお手元のプロジェクトをGitHubなどで公開してもらえると助かります。
全体を公開するのは難しいでしょうが、できればカテゴリーの部分だけでもあると色々と捗ります。
ソースコードが開示されているのであれば、上記の過去への質問はなくても問題ないと思います。

よろしくお願いします。

投稿2014/12/02 10:23

hello-world

総合スコア1342

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

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

0

ベストアンサー

何も見ずに書いているので、雰囲気だけですが、

親カテゴリ一覧はこんな感じで

lang

1<% Category.where(parent_id: nil).each do |cat| %> 2 <%= link_to cat.name, category_detail_path(cat.id) %> 3<% end %>

子カテゴリ用のページを作って

lang

1# config/routes 2 3get '/categories/detail/:id', controller: 'categories', action: 'detail', as: 'category_detail'

アクション作って

lang

1class CategoriesController < ApplicationController 2 def detail 3 @category = Category.find(params[:id]) 4 # ... あと適当に 5 end 6end 7

子カテゴリ一覧がこんな感じ?

lang

1<div class="page-header"> 2 <h4><%= @category.name %></h4> 3</div> 4<% @category.categories.each do |cat| %> 5 <%= link_to cat.name, category_detail_path(cat.id) %> 6<% end %>

投稿2014/12/02 07:47

hello-world

総合スコア1342

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

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

退会済みユーザー

退会済みユーザー

2014/12/03 08:16

いただいたコードでTOPページに親カテゴリーの一覧が作成できました。 親カテゴリ(メンズ)をクリックするとメンズ一覧へ遷移するのですが アイテムを表示する方法がわかりません 昨日から色々試しているのですが、やっぱりわかりませんでした。 以前の表示方法は下記の通りです。 def index @items = Item.page(params[:page]).per(25).order("created_at DESC") end <% @items.each do |item| %> <%= link_to(item) { image_tag item.picture1_url(:thumb) if item.picture1? } %> <% end %>
hello-world

2014/12/03 08:22

最初に例示されたコードが動く前提ですが、indexもdetailも >buf = get_all_items(@category) > @items = Kaminari.paginate_array(buf).page(params[:page]).per(10) これでいけませんか?
退会済みユーザー

退会済みユーザー

2014/12/03 11:13

確かにご指摘の点で動きました。 ありがとう御座います。 自分のスキルのなさ、そもそも設計がひどすぎるので 嫌気がさしますが、頂いたコードを理解し引き続き頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問