0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】ActiveHachで作成したmodelの中身を一覧表示したい!!と思ったので実装してみた

Last updated at Posted at 2020-12-09

挑戦すること

ActiveHashで作成したmodelの中身を一覧表示します。

前提

投稿テーブルに紐づいたActiveHashで作成したカテゴリーテーブルを一覧表示したい!

ちなみにActiveHashとはこんな感じです。
idで取得してnameで表示するといった実装方法かと。

今回は、こちらのnameをそれぞれ一覧表示していきます。

models/category.rb
class Category < ActiveHash::Base
  self.data = [
    { id: 1, name: 'hoge' },
    { id: 2, name: 'huga' },
    { id: 3, name: 'hogehoge' },
    { id: 4, name: 'hugahuga' },
  ]

  include ActiveHash::Associations
  has_many :posts
end

実装方法

  1. routeを定義
  2. コントローラーを設定
  3. ビューファイルを作成
  4. リンクを作成

手順は上記の通りです。
順に解説していきますね。

1.Routingを定義する

カテゴリー一覧ページに必要なルートを定義します。

get '/posts/category/:id' => 'posts#category'

2.コントローラーを編集

カテゴリーページに必要な変数を定義します。

def category
 @posts = Post.where(category_id: params[:id]).order("created_at DESC") #追記
 @post = Post.find_by(category_id: params[:id]) #追記
end

3. ビューファイルを作成

カテゴリー一覧表示の見た目を作ります。
フロントはお任せいたします。

categories/index.html.erb
# カテゴリー名を表示
<%= "#{@post.category.name}の一覧ページ" %>

# カテゴリーの中身を表示
@posts.each do |post|
 #省略
end

4.リンク作成

カテゴリーページに遷移するためのリンクを作成します。
今回の場合であれば投稿一覧ページとかに追記するのが一般的かと思われます。

posts/index.html.erb
<%= link_to "カテゴリー名", '/posts/category/1' %>
<%= link_to "カテゴリー名", '/posts/category/2' %>
<%= link_to "カテゴリー名", '/posts/category/3' %>
<%= link_to "カテゴリー名", '/posts/category/4' %>

実装は以上になります。
皆様うまく実装できたでしょうか?

個人的にActiveHashを用いたカテゴリー一覧ページを実装したかったので、今回投稿させていただきました!

また、何か相違点などございましたらコメントしていただけると幸いです。
よろしくお願いいたします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?