: remote => true не работает, когда файл-загрузчик используется в форме
В основном, когда я включаю и использую загрузчик файлов в своей форме, он, похоже, отменяет функцию: remote = > true и обрабатывает действие как HTML вместо JS. любые идеи?
Ответы
Ответ 1
Я просто столкнулся с той же проблемой и нашел следующие альтернативы, чтобы заставить ее работать:
Gem remotipart = > http://www.alfajango.com/blog/rails-3-ajax-file-uploads-with-remotipart/
jQuery Plugin 'jaxy' = > https://github.com/adamlogic/jquery-jaxy
Думаю, мне нравится первый вариант лучше. Но хорошо иметь варианты. =)
Ответ 2
Вы не можете загружать файлы через AJAX, поэтому ваш запрос приходит как простой HTML, потому что у вас нет ничего конкретного: js и rails думают, что это просто простой запрос HTML POST.
https://github.com/JangoSteve/remotipart
gem 'remotipart', '~> 1.2'
а затем bundle install
//= require jquery.remotipart
sample_layout.html.erb
<%= form_for @sample, :html => { :multipart => true }, :remote => true do |f| %>
<div class="field">
<%= f.label :file %>
<%= f.file_field :file %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
в контроллере
def create
respond_to do |format|
if @sample.save
format.js
end
end
end
create.js.erb
// Display a Javascript alert
alert('success!');
<% if remotipart_submitted? %>
alert('submitted via remotipart')
<% else %>
alert('submitted via native jquery-ujs')
<% end %>
Ответ 3
Загрузка изображений AJAX не работает, по крайней мере, не стандартным способом.
Есть более новые методы HTML5, которые заставляют его работать, и обходные пути с использованием <iframe>
Существует отличная библиотека, которая выполняет многократную загрузку ajax файла с индикатором прогресса и ухудшает использование разных методов в зависимости от браузера.
Библиотека загрузки AJAX: http://valums.com/ajax-upload/
Это потребует немного дополнительной работы, но результат может быть очень приятным!