我在表单外部有一个复选框,为此,我使用带有ID的表单,如下所示:
我的id:'check-form'
表单
<%= form_for(:execution, url:{controller:"executions", action:'create_multiple'}, html:{id:"check-form", class:"form-inline"}) do |form| %>
<div class="input-group mb-3">
<%= form.select :collaborator_id,@collaborators.collect
{ |collaborator| [collaborator.name, collaborator.id] },
{prompt: 'Selecione'}, {class:'form-control', required:true} %>
<div class="input-group-append">
<%= button_tag(type: "submit", class: "btn btn-raised btn-primary", form:'check-form') do %>
<span><i class="far fa-play-circle"></i> Play</span>
<% end %>
</div>
</div>
<% end %>
我的form:'check-form'
复选框
<%= check_box_tag 'execution[status_id][]', item.sector_status(sector.id).id, checked:false,
{id:"check-#{item.sector_status(sector.id).id}", form:'check-form'}%>
我想要的是能够通过另一种方法使用另一种形式的复选框的值。我有什么办法或者使用函数通过两种可能的方法使表格“工作”?
答案 0 :(得分:2)
我会在两种形式中都设置一个隐藏字段,并向它们添加一个类:
<%= hidden_field_tag('execution[status_id][]', item.sector_status(sector.id).id, {class: 'my_checkbox_value'}) %>
然后在表单外部创建一个虚拟复选框,单击该复选框将为这些隐藏字段分配一个值:
<%= check_box_tag('dummyCheckbox', someValue , yourClickedValue, {id: 'my_dummy_checkbox') %>
最后将它们与jQuery点击处理程序结合在一起
$("#my_dummy_checkbox").click(function() {
if ($(this).prop("checked") == true) {
$(".my_checkbox_value").val($(this).attr("value"))
} else {
$(".my_checkbox_value").val("")
}
})
现在,提交表单时,如果单击了隐藏字段,则其值为复选框的值,否则为空。
答案 1 :(得分:1)
自HTML5以来,对于类型=提交的按钮,您可以使用一种表单并使用不同的方法使用属性“ formmethod”来提交表单。
<form .....>
<button type='submit' formmethod='post'>Sends a POST request</button>
<button type='submit' formmethod='get'>Sends a GET request</button>
</form>
与表单的method属性匹配的按钮可以忽略Formmethod属性。