Skip to content

Instantly share code, notes, and snippets.

@stevepolitodesign
Last active June 5, 2024 13:33
Show Gist options
  • Save stevepolitodesign/496828099bef9adf9c0142a9f223f97d to your computer and use it in GitHub Desktop.
Save stevepolitodesign/496828099bef9adf9c0142a9f223f97d to your computer and use it in GitHub Desktop.
Turbo Tags Example
# 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) %>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment