13

/person/:id など、特定のページに移動できる Rails アプリケーションを作成しようとしています。このページには、利用可能なリソースのセットが表示されます。各リソースの横にボタンを配置して、そのリソースをその人に予約します (割り当てモデルの新しいインスタンスを作成することによって)。拡張機能として、予約をキャンセルして実行するボタンを各リソースごとにいくつか用意したいと思います。他のもの。また、リソースの一部を割り当てるなど、いくつかのボタンと一緒にデータを入力したいと思います。

私の問題は、自分自身を繰り返すか、非常にハッキーなコントローラーを使用せずに、これを賢明に行う方法を理解できないことです。送信ボタンの値の部分 (ボタンのテキスト) を一致させたり、JavaScript を使用したりせずに、これを行うにはどうすればよいですか?

さらに、ページに 2 つのフォームがある場合、送信ボタンがクリックされたときに両方のフォームの変更が保存されるように設定するにはどうすればよいでしょうか?

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

リストの各行をフォームにして、問題のアイテムに関する情報をそこに置きます。もちろん、アクションごとにページを送信してリロードする必要があります。これを回避する唯一の方法は、ボタンの代わりにチェックボックスを使用して 1 つの大きなフォームにするか、Javascript を使用することです。

2 番目の質問についてですが、送信ボタンが 2 つの「フォーム」に影響を与えるようにしたい場合は、両方を同じフォームの一部にする必要があります。必要に応じて、フォームに複数の送信ボタンを配置できます。それ以外の場合は、元のフォームの値を Javascript で埋めて 3 番目のフォームを動的に生成できますが、すべての場合 (ファイル入力など) で機能するとは限りません。

于 2009-01-20T22:10:21.493 に答える