Rails 使用 Turbo Frame 和 Stimulus 实现 Modal

ratazzi · 2025年08月29日 · 最后由 ratazzi 回复于 2025年08月29日 · 68 次阅读

作为一个全栈工程师,以前很怕写 Modal,要写一堆 HTML 生成复杂表单还要写一堆 JS 逻辑

现在使用这个技术栈配合 simple_form 可以非常简单,这里只是讲下核心逻辑,实际要复杂一些

  • lazy 的 frame 在显示时会加载内容
  • 默认的 spinner 作为初始的 loading 在替换后自动消失
<div class="modal-body">
  <%= turbo_frame_tag :webhook_form_frame, src: new_webhook_path, loading: :lazy do %>
    <%= render('shared/spinner') %>
  <% end %>
</div>
<%= turbo_frame_tag :webhook_form_frame do %>
  <%= simple_form_for @webhook, url: webhook_path(@webhook), method: :post do |f| %>
    <%= f.input :name %>
    <%= f.input :url %>
    <%= f.input :event %>
    <%= f.button :submit %>
  <% end %>
<% end %>
需要 登录 后方可回复, 如果你还没有账号请 注册新账号