Rails неизвестного формата на AJAX

Я пытаюсь реализовать очень простую форму файла, используя remotipart драгоценный камень. Большинство моих файлов такие же, как учебные:

timeline.html.erb:

<%= form_tag new_feed_path(:format => "js"), remote: true, :html => { :multipart => true } do |f| %>
  <%= hidden_field_tag :brief_id, @brief.id %>
  <%= file_field_tag :file %>
  <%= submit_tag "Send", class: "btn btn-success" %>
<% end %>

briefs_controller.rb

 def new_feed
    puts params
    respond_to do |format|
      format.js
    end
 end

new_feed.js.erb

alert('success!');

<% if remotipart_submitted? %>
  alert('submitted via remotipart')
<% else %>
  alert('submitted via native jquery-ujs')
<% end %>

Но каждый раз, когда я отправляю форму, я получаю следующую ошибку в журналах:

Processing by ResourcesController#create as HTML
Completed 406 Not Acceptable in 14ms
ActionController::UnknownFormat - ActionController::UnknownFormat:

Я что-то пропустил? Я знаю, что загрузка ajax-файлов может быть непростой задачей в RoR, но remotipart представляется жизнеспособным решением.

РЕДАКТИРОВАТЬ Мне удалось исправить первую проблему, добавив :format => "js", но теперь я сталкиваюсь с другой проблемой: ни одна из форм данных не отправляется. На самом деле, вот отправленные параметры:

{"controller"=>"briefs", "action"=>"new_feed"}

2 ответа

Проверьте пример из документов Remotipart.

Похоже, ты не проходишь мимо :html => { :multipart => true } в form_for

Попытайся

<%= form_tag new_feed_path, html: {multipart: true }, method: :post, remote:true do |f| %>
  <%= hidden_field_tag :brief_id, @brief.id %>
  <%= file_field_tag :file %>
  <%= submit_tag "Send", class: "btn btn-success" %>
<% end %>

редактировать

попытайся

установить этот драгоценный камень pry

RailsCast Pry

briefs_controller.rb

def new_feed
  binding.pry #just to be sure that this action is not called 
  puts params
  respond_to do |format|
    format.js { render 'new_feed') # modify this
  end
end
Другие вопросы по тегам