🏷️

[投稿に複数Tag] 編集編

2024/07/05に公開

前回の続き!!

実装したい事

1.1つの投稿に対して複数のタグをつけたい
2.詳細画面で複数表示されるようにしたい
3.編集画面でタグを一気に付け替えれるようにしたい
4.タグで検索できるようにしたい
(5.タグ検索を複数でできるようにしたい)

3.編集画面でタグを一気に付け替えれるようにしたい

controller
def edit
 @post = Post.find(params[:id])
end 
    
def update
 @post = Post.find(params[:id])
 if @post.update(post_params.except(:tag_ids))
  @post.tags = Tag.where(id: params[:post][:tag_ids].reject(&:blank?))
  flash[:post_edit_notice]="正常に変更内容が反映されました"
  redirect_to admin_post_path(@post)
 else
  render edit
 end 
end

controllerはcreateと同じ😺助かるなあ!!

続いて出力!

<%= form_with(model: @post, url: admin_post_path(@post), method: :patch, local: true) do |form| %>
<% end %>

の中にnewと同じもの入れるだけでした。。変わったところで言うと2列で並べたかったので、rowで区切って、col-6にして2つに区切った事くらいかな??

<div class="card mb-3">
  <div class="card-body">
   <%= form.label :tag_ids, "タグ" %>
    <div class="row">
      <% Tag.all.each_with_index do |tag, index| %>
       <div class="col-6">
        <%= form.check_box :tag_ids, { multiple: true }, tag.id, nil %>
        <%= tag.name %>
       </div>
      <% end %>
    </div>
  </div>
</div>

出力結果が💁‍♀️
前章で述べた'nil'のおかげでちゃんと投稿時(または最新)のタグにはチェックがついてました🕺


うまくいってよかったー。検索機能が山場だなぁ。。。。。

Discussion