Ant*_*lad 6 html forms ruby-on-rails erb
我正在研究如何解决这个问题.我有2个表格需要彼此相邻显示,但你不能嵌入表格,我只是把第二个表格放在第一个表格之后.
但是,rails忽略<% end %>了第二个表单的标签,它在需要关闭之前自动关闭第二个表单.这使我的表格不起作用.
为简洁起见,这里省略了一些位.
<div class="row">
<div class="col-md-3">
<div class="well">
<%= render "shared/some_form", url_path: foo_path %>
<%= form_tag some_other_path, method: :delete, id: "form_bulk_action", role: "form" do %>
<div id="bulk_action_group">
<div class="form-group">
<%= label_tag "perform_bulk_action", "For each checked item" %>
<%= select_tag "perform_bulk_action", options_for_select([ ["Delete", "destroy"] ]), class: "form-control" %>
</div>
<%= button_tag id: "foo" %>
</div>
</div>
</div>
<div class="col-md-9">
<table class="table table-condensed table-hover">
<thead>
<tr>
<th><%= check_box_tag :check_all_data_rows, "", false %></th>
</tr>
</thead>
<tbody>
<% @foo.each do |foo| %>
<tr>
<td><%= check_box_tag "bulk_ids[]", foo.id, false, %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
加载some_form的部分是第一种形式.该形式的开头和结尾发生在部分内部.
第二种形式是form_tag.正如您从html标记中看到的那样,我们左侧有一个侧边栏,右侧的主要内容被加载到表格中.
第二种形式的想法是它允许您检查行,然后对已检查的项目执行批量操作.与您在gmail中标记15封电子邮件然后删除它们的方式类似.
问题是rails忽略了<% end %>代码片段的底部,而是</form>在按钮后面注入了一个id: foo.
这导致bulk_ids值始终为nil,因为此时表单已经关闭,并且它们不是表单的一部分.疯狂的是,只有当你从另一个页面转到页面时才会失败(即turbolinks).当你完全加载页面时它会起作用,但我认为主要问题是过早关闭</form>标签.
我如何设置这一切,以便表格没有嵌入,第二个表格在表格底部完全关闭,同时仍然使用表单助手?
您的根本问题似乎是表单既是动作又是矩形。所以你需要一个大矩形里面有一个小矩形,每个矩形都有自己不同的动作。CSS 专家可能知道如何编写一种<form style="display:inline" ...>形式,使一种形式可以围绕另一种形式流动,而不强制使用矩形形状。