В моем приложении Rails я хочу обновить модель, когда пользователь загрузит изображение. Изображение будет отображаться на странице сразу после выбора изображения, но изображение должно быть загружено в фоновом режиме в виде вызова AJAX. Другими словами, форма должна быть отправлена без пользователю, нажав кнопку отправки, - он должен автоматически отправить форму после выбора файла.Отправить Ajax Form using Rails
В моей текущей реализации появившееся изображение появляется на странице, но оно запускает обновление HTML, которое заставляет страницу обновляться, даже если в форме задано значение true. Как обеспечить отправку формы в виде запроса AJAX?
(я последовал примеру на этой странице: Submit form in rails 3 in an ajax way (with jQuery))
<%= form_for [@collection], :html => {:id => "collection_avatar_form" }, :remote => true do |f| %>
<div id="uploadImageWrapper" title="Edit Avatar">
<%= image_tag(@collection.image_url(:thumb), :class=>"img-rounded") %>
<div id="editAvatarIcon"><icon class="fa fa-pencil"></icon></div>
<%= f.file_field :image %>
</div>
<% end %>
который создает этот HTML:
<form accept-charset="UTF-8" action="/collections/introduction-to-product-design--3" class="edit_collection" data-remote="true" enctype="multipart/form-data" id="collection_avatar_form" method="post">
Javascript:
$('#collection_image').change(function(){
var F = this.files;
var reader = new FileReader();
var image = new Image();
reader.readAsDataURL(F[0]);
reader.onload = function(_file){
image.src = _file.target.result;
image.onload = function() {
$('#collectionAvatar').find('img').attr('src', this.src);
};
}
$('#collection_avatar_form').trigger('submit.rails');
});
это не относится файл изображения в параметрах – scientiffic
Что вы подразумеваете под «файлом изображения»? Вы хотите включить 'src' в параметры? – nesiseka
Пользователь загружает изображение, используя элемент file_field формы. Это нужно загрузить в качестве параметра в форме, что, похоже, не происходит с использованием вашего предложения. – scientiffic