# app/controllers/post/tags_controller.rb
class Post::TagsController < ApplicationController
def new
@tag = Tag.new
end
def create
@tag = Tag.new(tag_params)
if @tag.save
redirect_to new_post_path
else
render :new, status: :unprocessable_entity
end
end
private
def tag_params
params.require(:tag).permit(:name)
end
end
<%# app/views/post/tags/new.html.erb %>
<%= turbo_frame_tag dom_id(@tag) do %>
<%= render "form", tag: @tag %>
<% end %>
<%# app/views/posts/_form.html.erb %>
<%= form_with(model: post) do |form| %>
<div>
<%= form.label :tags, style: "display: block" %>
<%= form.collection_check_boxes :tag_ids, Tag.order(:name), :id, :name %>
</div>
<%= link_to "Add Tag", new_post_tag_path, data: { turbo_frame: dom_id(@post.tags.new) } %>
<div>
<%= form.submit %>
</div>
<% end %>
<%= turbo_frame_tag dom_id(@post.tags.new) %>