有没有一种方法可以使用Rails Turbo Frames添加多个新项目



我正在尝试链接一个按钮来插入一个新项目的表单。我希望能够添加一个新的形式,每个按钮点击使用涡轮增压框架。我在增加每个帧的id时遇到了问题,所以添加了一个新的turbo帧,而不是仅仅替换旧的。在用户完成添加项目并对其进行验证之前,我不希望数据保存在数据库中。

在我的新批量项目页面上。。。

<%= button_to 'Add One', new_item_path,
data: { turbo_frame: dom_id(item.new)}, method: :get %>
<%= turbo_frame_tag dom_id(item.new) do %>
<% end  %>

在我的新项目页面上。。。

<%= turbo_frame_tag dom_id(item.new) do %>
<%= simple_form_for [@item] do |f| %>
<% end %>
<% end  %>

我看到一个帖子,声称成功使用了这个。。。

new_item_#{params.fetch(:index) + 1}

我尝试过集成它,但得到了相同的错误"param is missing or the value is empty:index",我一直在尝试传入:index。如何在两个帧之间增加索引?

如果您只有一个"添加新的";按钮,您可以使用turbo流附加操作插入多个新表单。

当控制器中的方法响应传入的turbo流请求时,您可以调整响应。

<%# new.turbo_stream.erb %>
<%= turbo_stream.append "items" do %> 
<%= render partial: "items/form", locals: {item: @item} %>
<% end %>

新的表单partial将被注入到您定义了"items"id的地方。

<%= button_to 'Add One', new_item_path,
data: { turbo_frame: dom_id(item.new)}, method: :get %>

<li id="items">
<!-- the injected forms will come be injected here -->
</li>

最新更新