如何在不重新加载turbo_frame_tag的情况下提交表单

How to submit a form without reloading turbo_frame_tag

提问人:aldrien.h 提问时间:6/8/2023 最后编辑:aldrien.h 更新时间:6/9/2023 访问量:372

问:

在 Rails 中使用 tubro_frame,如何在不重新加载的情况下提交位于 turbo 框架内的表单?

示例代码:

<%= turbo_frame_tag "sample-frame" do %>
  <%= form_with(model: model, url: sample_p_url, method: :put) do |f| %>
    #other fields here
    <%= f.submit "Save" %>
   <% end %>
<% end %>

问题:提交表单时,它还会重新加载框架。 我试图供应形成但没有工作 🤔data: {turbo: true) or data: {remote: true}

Ruby-on-Rails Turbolinks StimulusJS Turbo 涡轮增压车架

评论


答:

0赞 Ray 6/9/2023 #1

如果您希望此表单保留在页面上并更新页面的其他部分,则需要将表单置于 .然后,可以通过设置窗体的属性来显式设置此窗体控制的框架。Turbo Docs:定位到帧内或帧外turbo-framedata-turbo-frame

但是,如果您希望允许您的表单多次提交,我建议允许它在页面上重新加载为新表单,以便您获得新的.authenticity_token

评论

0赞 aldrien.h 6/12/2023
嗨@Ray - 感谢您的回答,我已经在其他情况下设置了 form(hidden) 在turbo_frame之外并通过刺激脚本手动触发提交操作。但是,这个想法对我来说不是一个好的选择,因为表单需要是动态的,并且是表格行循环的一部分。对于解决方法 - 我所做的是将表单包装在另一个turbo_frame,发生的事情是它只重新加载此帧而不是父帧:)
0赞 Ray 6/23/2023
再看一下有关“定位”的文档。您可以设置为要重新加载的父帧吗?targetid