我正在尝试链接一个按钮来插入一个新项目的表单。我希望能够添加一个新的形式,每个按钮点击使用涡轮增压框架。我在增加每个帧的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>