: remote => true не работает, когда файл-загрузчик используется в форме

В основном, когда я включаю и использую загрузчик файлов в своей форме, он, похоже, отменяет функцию: remote = > true и обрабатывает действие как HTML вместо JS. любые идеи?

Ответы

Ответ 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/

Это потребует немного дополнительной работы, но результат может быть очень приятным!