挑戦すること
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
実装方法
- routeを定義
- コントローラーを設定
- ビューファイルを作成
- リンクを作成
手順は上記の通りです。
順に解説していきますね。
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を用いたカテゴリー一覧ページを実装したかったので、今回投稿させていただきました!
また、何か相違点などございましたらコメントしていただけると幸いです。
よろしくお願いいたします。