我有一个包含数据的表(名称,描述,文件等)所有这些都可以使用Rails gem best_in_place和blueimp jQuery文件上传通过AJAX补丁内联编辑。一切正常。
表格的底部是一个表单,允许用户填写所有数据并提交新的表格行。
我无法通过该文件提交此内容,除非它以某种方式提交两次。
形式:
# has class and ID: "new_item"
<%= form_for @item, remote: true do |f| %>
<%= f.text_field :description, class: "form-control", placeholder: "description" %>
<%= f.text_field :url, class: "form-control", placeholder: "www.example.com" %>
# has ID: "item_attachment"
<%= f.file_field :attachment %>
<%= f.submit "add item", class: "btn btn-success" %>
<% end %>
文件上传JS:
var sendData = true;
$('.new_item #item_attachment').fileupload({
dataType : 'javascript',
autoUpload : false,
add : function(e,data){
$("form.new_item").on("submit",function(e){
var $this = $(this);
e.preventDefault();
if(sendData){
data.formData = $this.serializeArray();
sendData = false;
console.log(data);
}
data.submit();
});
},
done: function(e,data){
sendData = true;
}
});
这会两次提交表单。一旦通过没有附件的表单(e.preventDefault();不工作??),并且一次通过jquery上传附件和数据,但它没有提交“作为JS”,所以它不呈现.js模板将新项目附加到表格中。
服务器日志:
Started POST "/items" for 127.0.0.1 at 2015-05-14 17:35:04 +0700
Processing by ItemsController#create as */*
Parameters: {"utf8"=>"✓", "item"=>{"description"=>"TEST", "attachment"=>#
<ActionDispatch::Http::UploadedFile:0x007fb88d4a9280 @tempfile=#
...removed attachment jargon...
Started POST "/items" for 127.0.0.1 at 2015-05-14 17:35:04 +0700
Processing by ItemsController#create as JS
Parameters: {"utf8"=>"✓", "item"=>{"description"=>"TEST"...}, "commit"=>"add item"}