0

我正在尝试使用remotipartgem 实现一个非常简单的文件表单。我的大部分文件与教程文件完全相同:

时间线.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"}
4

2 回答 2

0

查看Remotipart 文档中的示例。

看起来你没有传递:html => { :multipart => true }form_for

于 2016-08-23T14:37:18.057 回答
0

试试看

<%= 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 %>

编辑

试试看

安装这个 gempry

RailsCast 撬

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
于 2016-08-23T15:33:12.857 回答