Rails中的多个提交按钮/表单

时间:2009-01-20 15:34:56

标签: ruby-on-rails ruby forms submit

我正在尝试编写一个rails应用程序,它允许你转到某个页面,比如/ person /:id。在此页面上,它显示了一组可用资源。我希望每个资源旁边都有一个按钮,它将该资源保留给该人(通过创建分配模型的新实例。)作为扩展,我想要每个资源的几个按钮,取消预订并执行其他事情。我还想在一些按钮旁边输入数据,例如分配一定比例的资源。

我的问题是我无法解决如何在不重复自己或拥有非常黑客的控制器的情况下明智地做到这一点。如何在不匹配提交按钮的值部分(按钮上的文本)或使用任何JavaScript的情况下执行此操作?

此外,如果您在页面上有两个表单,那么如何设置它以便在单击任何提交按钮时保存两个表单上的更改?

2 个答案:

答案 0 :(得分:5)

我正在使用jQuery,这就是我所做的:

<script type="text/javascript">
    $(document).ready(function() {

        $('#bulk_print').click(function(){
            var target = '<%= bulk_print_prepaid_vouchers_path(:format => :pdf) %>';
            $('#prepaidvoucher_bulk_print').attr('action', target);
            $('#prepaidvoucher_bulk_print').submit();
        });

        $('#bulk_destroy').click(function(){
            var target = '<%= bulk_destroy_prepaid_vouchers_path %>';
            $('#prepaidvoucher_bulk_print').attr('action', target);
            $('#prepaidvoucher_bulk_print').submit();
        });

    });
</script>

<% form_tag '#', :method => :post, :id => 'prepaidvoucher_bulk_print' do %>

your form details

<button class="button" type="submit" id="bulk_print">
   <%= image_tag("web-app-theme/printer.png", :alt => "Print Selected Vouchers") %> Print Selected Vouchers
</button>

<button class="button" type="submit" id="bulk_destroy">
    <%= image_tag("web-app-theme/cross.png", :alt => "Delete Selected Vouchers") %> Delete Selected Vouchers
</button>

<% end %>

我们的想法是根据点击的按钮

动态更改表单操作

答案 1 :(得分:1)

将列表中的每一行设为表格,并在此处放置有关该项目的信息。当然,您需要在每次操作时提交并重新加载页面。解决这个问题的唯一方法是使用复选框而不是按钮,并使其成为一个大的形式 - 或者使用Javascript。

至于你的第二个问题,如果你想让一个提交按钮影响两个“表格”,你应该让它们成为同一个表格的一部分。如果需要,您可以在表单上有多个提交按钮。否则,您可以使用Javascript填充原始表单中的值来动态生成第三个表单 - 但这并不适用于所有情况(例如,文件输入)。