Ruby on rails Rails:表单标签外的提交按钮

Ruby on rails Rails:表单标签外的提交按钮,ruby-on-rails,forms,Ruby On Rails,Forms,我使用一个按钮在一组选中的复选框中执行处理。该解决方案基于RailsCast 165 这一切都可以正常工作,但前提是表单中包含了提交标签按钮(这是我的应用程序中的一个表)。我想将submit按钮放在页面标题中,但这会中断与表单的连接 如何将“提交”按钮放置在表单正文之外 <%= form_tag select_cosmics_path, method: :put do %> <%= submit_tag "Accept Checked", :class => "btn

我使用一个按钮在一组选中的复选框中执行处理。该解决方案基于RailsCast 165

这一切都可以正常工作,但前提是表单中包含了提交标签按钮(这是我的应用程序中的一个表)。我想将submit按钮放在页面标题中,但这会中断与表单的连接

如何将“提交”按钮放置在表单正文之外

<%= form_tag select_cosmics_path, method: :put do %>
  <%= submit_tag "Accept Checked", :class => "btn btn-primary" %> 

  <table class="table table-striped"> 
   .
   .
  <% @cosmics.each do |cosmic| %>
    <tr>
      <td><%= check_box_tag "cosmic_ids[]", cosmic.id %></td>
       .
       .
    </tr>
  <% end %>
  </table>
<% end %>

您可以在表单外部创建按钮,并在单击按钮时使用javascript提交表单:

HTML:

您还可以直接在按钮的
onClick
属性中添加javascript。

这样,您就可以将submit outside表单添加到链接中,只需添加一个“outside submit”类

HTML:
虽然这个问题由来已久,但我认为有必要指出一个不依赖JavaScript的更好选项

HTML5引入了
form
,作为一个属性,可以应用于任何表单控件,并根据其id将其绑定到特定表单,即使该控件没有嵌套在表单标记中

例如:

<form id="my_sample_form">
...
</form>

<input type="submit" value="Submit" form="my_sample_form">

...
此提交按钮将使用表单属性中指定的id提交表单

此外,这不仅限于提交按钮,而是适用于任何表单控件,并允许您提交遍布各地的表单部分


与大多数JavaScript解决方案不同,您将保留所有本机表单功能,如在输入/返回时提交。

真的吗?是否有某种方法可以链接到表单外的其他按钮或链接?不知道这是否是最佳解决方案,但您是否尝试使用按钮的绝对定位?我没有。。。我来试试。那太棒了,波德里克!你是个传奇人物!另外,我认为布莱克达爵士有时可能有点不公平;-)输入时提交功能是我不想使用js解决方案的原因。而且,这更干净。谢谢这非常优雅。请记住,这是任何版本的IE都不支持的解决方案。
<button id="myBtn" class="btn btn-primary">Accept Checked</button>
...
<%= form_tag select_cosmics_path, method: :put, id: 'myForm' do %>
  ...
<% end %>
$(document).ready(function() {
  $('#myBtn').on('click', function() { $('#myForm').submit(); });
});
<a class="outside-form" data-formid="my-form">link to submit</a>

<form id="my-form">
  ...
</form>
jQuery ->
  $buttons = $(".outside-submit")

  for button in $buttons
    $button = $(button)
    $form = $("##{$button.data().formid}")
    $button.on 'click', -> $form.submit()
<form id="my_sample_form">
...
</form>

<input type="submit" value="Submit" form="my_sample_form">