Tabs often turn into a mini-SPA. Instead, I treat each tab as a URL and load its content into a turbo_frame_tag named tab_content. Clicking a tab link targets that frame. This gives you browser history, deep linking, and sharable URLs, while keeping the UI snappy. The controller can render the same template for both full-page and frame requests; for frames, you can disable layout. This approach also works for “settings” pages: profile, billing, security. Each tab can have its own controller action if needed, or a single action that branches by params. The important thing is that tabs are still links; users can open them in a new tab or copy the link.