Несколько кнопок / форм отправки в Rails - PullRequest
12 голосов
/ 20 января 2009

Я пытаюсь написать приложение rails, которое позволяет вам перейти на определенную страницу, скажем / person /: id. На этой странице он показывает набор доступных ресурсов. Я хочу, чтобы у каждого ресурса была кнопка рядом с ним, которая резервирует этот ресурс для этого человека (путем создания нового экземпляра модели распределения.) Как расширение, я бы хотел, чтобы у каждого ресурса было несколько кнопок, которые отменяют резервирование и делают другие вещи. Я также хотел бы ввести данные рядом с некоторыми кнопками, например, выделить несколько% ресурса.

Моя проблема в том, что я не могу понять, как разумно сделать это, не повторяя себя или не имея очень хакерского контроллера. Как я могу сделать это, не сопоставляя значение в части кнопок отправки (текст на кнопках) или используя любой javascript?

Кроме того, если у вас есть две формы на странице, как вы ее настраиваете, чтобы изменения в обеих формах сохранялись при нажатии любой кнопки отправки?

Ответы [ 2 ]

5 голосов
/ 08 июля 2010

я использую 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 голос
/ 21 января 2009

Сделайте каждую строку в списке формой и поместите туда информацию о предмете. Конечно, вам нужно отправить и перезагрузить страницу с каждым действием. Единственный способ обойти это - использовать флажки вместо кнопок и сделать их одной большой формой - или использовать Javascript.

Что касается вашего второго вопроса, если вы хотите, чтобы кнопка отправки влияла на две «формы», вы должны сделать их обе частью одной и той же формы. Вы можете иметь несколько кнопок отправки в форме, если вам нужно. В противном случае вы могли бы динамически сгенерировать третью форму с Javascript, заполненным значениями из исходной формы, но это не сработало бы во всех случаях (например, ввод файлов).

...