2009-01-20 43 views
12

Tôi đang cố gắng viết một ứng dụng đường ray cho phép bạn truy cập một trang nhất định, nói/person /: id. Trên trang này, nó hiển thị một tập hợp các tài nguyên có sẵn. Tôi muốn mỗi tài nguyên có một nút bên cạnh nó, để dự trữ tài nguyên đó cho người đó (bằng cách tạo một cá thể mới của mô hình Phân bổ.) Là phần mở rộng, tôi muốn một số nút của từng tài nguyên, hủy bỏ việc đặt chỗ và thực hiện những thứ khác. Tôi cũng muốn nhập dữ liệu cùng với một số nút, ví dụ: phân bổ một số% tài nguyên.Nhiều nút/biểu mẫu gửi trong Rails

Vấn đề của tôi là tôi không thể tìm ra cách để làm điều này một cách hợp lý mà không lặp lại bản thân, hoặc có một bộ điều khiển rất mạnh. Làm thế nào tôi có thể làm điều này mà không phù hợp trên phần giá trị của các nút gửi (văn bản trên các nút), hoặc sử dụng bất kỳ javascript?

Ngoài ra, nếu bạn có hai biểu mẫu trên một trang, làm thế nào để bạn thiết lập nó để thay đổi trên cả hai biểu mẫu được lưu khi nhấn nút gửi?

Trả lời

1

Đặt từng hàng trong danh sách biểu mẫu và đặt thông tin về mục được đề cập ở đó. Tất nhiên, bạn sẽ cần phải gửi và tải lại trang với mỗi hành động. Cách duy nhất xung quanh việc này là sử dụng hộp kiểm thay vì nút và làm cho nó một hình thức lớn - hoặc sử dụng Javascript.

Đối với câu hỏi thứ hai của bạn, nếu bạn muốn có nút gửi ảnh hưởng đến hai "biểu mẫu", bạn nên đặt cả hai thành phần của cùng một biểu mẫu. Bạn có thể có nhiều nút gửi trên biểu mẫu nếu bạn cần. Nếu không, bạn có thể tạo động một biểu mẫu thứ ba với Javascript chứa đầy các giá trị từ biểu mẫu ban đầu - nhưng điều đó sẽ không hoạt động trong mọi trường hợp (ví dụ: đầu vào tệp).

5

im sử dụng jQuery, và đây là những gì tôi đã làm:

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

Ý tưởng là để thay đổi hình thức hành động một cách nhanh chóng, dựa trên nút mà được nhấp

Các vấn đề liên quan