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

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

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

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

Q&A

0回答

493閲覧

タグと同じ値を絞り込みしたい。

Giants

総合スコア11

Ruby on Rails 5

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

0グッド

0クリップ

投稿2022/11/16 04:24

前提

「一覧画面」と「詳細画面」に表示されたタグをクリックすると、
タグと同じ投稿を絞り込みできる実装をしたいです。
(タグの表示までは問題なく実装できております。)

どなたかご教示のほどよろしくお願い致します。

実現したいこと

[一覧画面]及び[詳細画面]

①下記の「車」タグを押すと

Image from Gyazo

②下記のように「車」タグが入った投稿が全て表示されるようにしたいです。

Image from Gyazo

該当のソースコード

_tag.html.erb

1[一覧画面と詳細画面のタグのパーシャルファイル] 2<a class="badge rounded-pill bg-primary"><%= tag.name %></a>

_post.html.erb

1<li id="<%= dom_id(post) %>"> 2 <div> 3 <div><%= link_to post.title, post_path(post) %></div> 4 posted by <%= post.user.name %> 5 </div> 6 <%= render partial: "tag", collection: post.tags %> 7 8 [以降省略]

index.html.erb

1<div class="container"> 2 <div class="row"> 3 <div class="col"> 4 <ul class="list-unstyled"> 5 <%= render @posts %> 6 7 </ul> 8 <%= paginate @posts %> 9 </div> 10 </div> 11</div>

show_html.erb

1[一部省略] 2 3 <div class="card-body"> 4 <h2 class="h2"> 5 <%= @post.title %> 6 </h2> 7 <%= simple_format(@post.body) %> 8 </div> 9 <div class= "card-footer"> 10 <%= render partial: "tag", collection: @post.tags %> 11 </div> 12 13[一部省略]

試したこと

パーシャルファイルにlink_toメソッドなどを当てはめてみましたが、
実装には至らなかったです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

no1knows

2022/11/16 22:06

何を参考にして実装したのかと、コントローラーを追記してください。 もし何も参考にしていないようであれば、一度「Rails タグ」などで検索して、そちらをもとに実装してうまく行かなければ、質問していただいたほうがよいかと思います。
Giants

2022/11/17 08:19 編集

ご返信ありがとうございます。 以下よりコントローラを転記いたします。 [posts_controller.rb] class PostsController < ApplicationController before_action :require_login, only: %i[new create] before_action :set_q, only: %i[index show new create edit update] def index @tag_list = Tag.all end def new @post = Post.new @tag = @post.tags.new end def create @post = Post.new(post_params) @post.user_id = current_user.id tag_list = params[:post][:tag].split(',') if @post.save @post.save_tag(tag_list) redirect_to post_path(@post), success: '投稿完了' else flash.now[:danger] = '投稿が作成できません' render :new end end def show @post = Post.find(params[:id]) @comment = Comment.new end def edit @post = current_user.posts.find(params[:id]) @tag_list=@post.tags.pluck(:name).join(',') end def update @post = current_user.posts.find(params[:id]) tag_list=params[:post][:tag].split(',') if @post.update(post_params) @post.save_tag(tag_list) redirect_to post_path(@post), success: '投稿の更新完了' else flash.now[:danger] = '投稿が更新できません' render :edit end end def destroy @post = current_user.posts.find(params[:id]) @post.destroy! redirect_to posts_path, success: '投稿を削除しました' end def search @tag_list = Tag.all #こっちの投稿一覧表示ページでも全てのタグを表示するために、タグを全取得 @tag = Tag.find(params[:tag_id]) #クリックしたタグを取得 @posts = @tag.posts.all #クリックしたタグに紐付けられた投稿を全て表示 end private def set_q @q = Post.ransack(params[:q]) end def post_params params.require(:post).permit(:title, :body, tag_ids: []) end end なお現在、下記のサイトを参考にしておりますが、うまくタグの絞り込みが実装できませんでした。 https://qiita.com/yuki_chrono/items/ce9f6e6ea9be0d438989 加えて、一覧画面および詳細画面のタグのviewファイルを下記より転記いたします。 [_tag.html.erb] <%= link_to tag.name, posts_path(tag_name: tag.name), class: 'badge rounded-pill bg-primary' %> 以上、ご確認のほどよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問