Vấn đề là tôi có một biểu mẫu từ xa, dựa trên điều kiện, id muốn chuyển đổi sang dạng không từ xa (sử dụng UJS) và sau đó gửi. lưu ý biểu mẫu có tệp tải lên.Sử dụng JS để thay đổi <form> từ xa sang không từ xa trong Rails 3, HAML
Dưới đây là chi tiết: Tôi đã bước đầu render hình thức từ xa sử dụng
= form_for @myobj, :url => {:action=>"remoteAction", :controller=>"myobjects"}, :remote => true do |f|
... (f.fields....)
mà tạo ra HTML:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" data-remote="true" action="/remoteAction">
khi tôi bấm submit, như mong đợi, biểu mẫu được gửi 'AS JS '. trong hành động điều khiển, tôi đang thực hiện một số xác nhận của các trường bên trong biểu mẫu đã gửi. Nếu tất cả các kiểm chứng thực vượt qua, tôi thực hiện mẫu .js.haml sau:
$('form#new_myobj').removeAttr("data-remote");
$('form#new_myobj').attr('enctype', 'multipart/form-data');
$('form#new_myobj').attr('action', '/myobjects/regularAction');
làm thay đổi thành công mã HTML trên trang (chứng kiến qua Firebug) tới:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" enctype="multipart/form-data" action="/myobjects/regularAction">
kể từ khi hình thức chứa f.file_field, tôi phải gửi dưới dạng multipart để hình ảnh có thể được tải lên và tôi không thể gửi 'AS JS' ngay bây giờ, khi tôi nhấp vào gửi, hành động điều khiển 'regularAction' thực sự được gọi, nhưng vẫn 'AS JS '
nhiệm vụ ion là, những gì khác tôi cần phải thay đổi trong HTML để hình thức có thể được gửi không-xhr? có liên quan đến tiêu đề không?
Cảm ơn đề xuất của bạn, vì vậy tôi đã thêm lệnh unbind() vào mẫu js.haml của mình, nhưng lần gửi thứ 2 vẫn đi đến hành động 'regularAction' 'AS JS ' –
$' ('form # new_myobj'). Unbind() $ ('form # new_myobj'). RemoveAttr ("data-remote"); ... –
là có bất kỳ thành phần nào khác tôi cần để unbind, có lẽ? –