我有一个表格,我需要有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参数。

10-07 19:48
查看更多