投稿一覧ページにて、配置されているカテゴリ画像をタップすると、
その画像のカテゴリーを保有する投稿のみ一覧で表示する方法を知りたいです。
現在post/index.htmlにて全てのポストが一覧できるような状況です。
各ポストはカテゴリー:idを保有しておりますが、ポスト一覧の上部分に、三つの画像を配置し、
その画像がタップされると、その画像が保有するcategory_idと、
同じcategory_idを保有するポストのみを一覧するということがしたく存じます。
view
1 <img src= "/icon/movie.png" > 2 <img src= "/icon/drama.png" > 3 <img src= "/icon/anime.png" >
こちらを、
view
1<%= link_to(image_tag("/icon/movie.png"), リンクのパス) %>
上記のようなリンクパスを与え、またそれに加えて:id値を与えて、
コントローラーに飛ばしてカテゴリ表示を考えています。
PostControllerには下記のような記載があります。
(今まではPost.allでしたが、nameで検索するサーチに機能もあるためこのようになっています。)
Controller
1def index 2 @posts = Post.search(params[:id]).order(created_at: :desc) 3 end
現状コントローラーはこのような状態ですが、取得はできていません。
Postとリレーションを持つCategoryモデルには下記のようになっています。
Model
1class Category < ApplicationRecord 2 has_many :posts 3end 4 5class Post < ApplicationRecord 6 belongs_to :user 7 belongs_to :category 8 def user 9 return User.find_by(id: self.user_id) 10 end 11 def index 12 @posts = Project.search(param[:search]) 13 end 14 def self.search(search) 15 if search 16 Post.where(['name LIKE ?', "%#{search}%"]) 17 else 18 Post.all 19 end 20 end 21 end
View内にnameで検索するテキストサーチも入っているため、少々複雑になっています。
DB
1<Category id: 1, name: "movie", created_at:xx, updated_at:xx> 2<Category id: 2, name: "drama", created_at:xx, updated_at:xx> 3<Category id: 3, name: "anime", created_at:xx, updated_at:xx>
DB
1 #<Post id: 1, title: "xx",, user_id: 1, category_id: 1 created_at: xx, updated_at: xx>
自分では現状このような状況です。
どのような方法でも宜しいので、ご教示頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/16 07:24
退会済みユーザー
2018/11/16 08:26 編集
2018/11/16 10:23
退会済みユーザー
2018/11/16 14:35 編集
2018/11/16 16:25
退会済みユーザー
2018/11/17 02:00 編集
退会済みユーザー
2018/11/17 02:02
2018/11/18 05:22
退会済みユーザー
2018/11/19 23:53
2018/11/20 01:44
退会済みユーザー
2018/11/20 12:23
2018/11/21 03:36
2018/11/21 05:44 編集