【发布时间】:2016-08-23 14:23:28
【问题描述】:
我正在尝试使用remotipart gem 实现一个非常简单的文件表单。我的大部分文件与教程文件完全相同:
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"}
【问题讨论】:
-
您使用了 remote true,但请求仍以 HTML 格式处理,正如您的日志所说
-
嗯,把news_feed.js.erb的名字改成create.js.erb怎么样?其他建议是将对
authorize的调用放在上面的respond_to块中。 -
@BenPolinsky , js 文件工作正常,也授权。我很确定它来自 form_for 本身,但不知道如何或为什么
-
显示你的 rake 路线 | grep new_feed
-
@BrenoPerucchi new_feed POST /new_feed(.:format) Briefs#new_feed
标签: ruby-on-rails ajax remotipart