13

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

我的问题是如果不重复自己或拥有一个非常老套的控制器,我无法弄清楚如何明智地做到这一点。如何在不匹配提交按钮的值部分(按钮上的文本)或使用任何 JavaScript 的情况下做到这一点?

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

4

2 回答 2

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 %>

这个想法是根据单击的按钮动态更改表单操作

于 2010-07-08T07:26:49.503 回答
1

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

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

于 2009-01-20T22:10:21.493 回答