Rails:在form_tag外提交按钮

ard*_*igh 27 forms ruby-on-rails

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

它一切正常,但只有在表单中包含submit_tag按钮(我的应用程序中的表).我想将提交按钮放在页眉中,但这会破坏与表单的连接.

如何在表单正文外放置提交按钮?

<%= 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 %>
Run Code Online (Sandbox Code Playgroud)

的routes.rb

resources :cosmics do
  collection do
    put :select
  end
end
Run Code Online (Sandbox Code Playgroud)

Mic*_*tel 46

虽然这个问题很老,但我认为值得指出一个不依赖JavaScript的更好的选择.

HTML5 form作为属性引入,可以应用于任何表单控件,并将基于其id将其绑定到特定表单 - 即使控件未嵌套在表单标记内.

例:

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

<input type="submit" value="Submit" form="my_sample_form">
Run Code Online (Sandbox Code Playgroud)

此提交按钮将提交具有其表单属性中指定的ID的表单.

此外,这不仅限于提交按钮,而是适用于任何表单控件,并允许您提交位于所有位置的表单部分.

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


Bal*_*ick 21

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

HTML:

<button id="myBtn" class="btn btn-primary">Accept Checked</button>
...
<%= form_tag select_cosmics_path, method: :put, id: 'myForm' do %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

Javascript(使用jQuery):

$(document).ready(function() {
  $('#myBtn').on('click', function() { $('#myForm').submit(); });
});
Run Code Online (Sandbox Code Playgroud)

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

  • 那太棒了Baldrick!你是个传奇!PS.我认为布莱克戴德爵士有时会有点不公平;-) (2认同)