我有一个表格,我需要有2个提交按钮。这似乎是我可以想到要做的唯一方法。
目标是使用一种形式发送给一种方法,然后根据传递的参数重定向到另一种方法,因为功能会有所不同。
形成:
<%= form_for(:mass, url: mass_product_variant_category_path, method: :get, remote: true) do |mass| %>
<%= mass.submit "Update All", name: "All", class: "btn btn-light" %>
<%= mass.submit "Update Files", name: "Files", class: "btn btn-light" %>
<% @Stuff.each do |variant| %>
<%= check_box_tag 'store_variant_ids[]', variant.id %>
<% end %>
...
<% end %>
我尝试了:
<%= submit_tag "Submit", name: "All" %>
,也无法正常工作。的HTML:
<input type="submit" name="File" value="Update Files" class="btn btn-light" data-disable-with="Update Files">
控制器:
def mass_product_variant_category
@stuff = Stuff.where(store_variant_id: params[:store_variant_ids])
if params[:commit] == "File"
redirect_to edit_multiple_stuffs_path(stuffs: @stuffs)
else
respond_to do |format|
format.js
end
end
end
通过的参数是:
{..."mass" => {hidden_field: "int"}, "other_attributes" => ["int"]...}
这是由于使用
remote: true
而引起的,但不确定原因或方式。如何根据提交表单通过参数?
我已经读过其他有关SO的帖子,但很少,而且似乎没有一个很好的答案。我也不能使用hidden_fields,因为需要基于所使用的提交按钮进行重定向。
是否有一种“ Rails”方式无需添加JavaScript即可完成此操作,或者这是我唯一的选择吗?
最佳答案
我通过在表单中使用hidden_field_tag
解决了这个问题,该表单基于通过onclick使用的提交按钮进行填写。然后,我可以在控制器中检查hidden_fields参数。