【问题标题】:"406 Not Acceptable" for file upload in RoR with AJAX使用 AJAX 在 RoR 中上传文件时出现“406 不可接受”
【发布时间】:2012-11-11 06:20:37
【问题描述】:

这是我的看法:

<%= form_for item, :url => comment_item_path(item), :html => {:remote => true, 'portal-transform' => true, :multipart => true} do |f| -%>
    <%= f.fields_for :updates, Update.new, :index => nil do |m| -%>
        <%= m.text_area :comment %><br />
        <%= m.file_field :attachment %>
    <% end -%>
    <%= f.submit "Comment" %>
<% end -%>

和控制器动作:

respond_to do |format|
  format.js do
    render :json => {}
  end
end

当我提交仅输入 comment (text_area) 字段并将 attachment (file_field) 字段留空的表单时,它会完全按照预期呈现。 但是当我使用attachment 提交表单时,结果是:

Completed 406 Not Acceptable in 56ms

我出了什么问题?请指导。

谢谢。

【问题讨论】:

  • 你能显示控制器动作的其余部分吗?
  • @polarblau:没什么。这是def 中唯一的代码(目前仅用于测试操作)
  • 所以,物品现在只是送入涅槃吗? — 406 通常表示(响应)格式存在问题,但我只是看不出在这种情况下如何......

标签: ruby-on-rails ruby ajax render


【解决方案1】:

出于安全原因,浏览器不允许通过 AJAX 上传文件。但是,如果您将表单的 file_field 留空,则表单会正常提交而不会出现错误,这说明了您所看到的行为。

要在 Rails 3 中通过 AJAX 上传文件,您可以使用 Remotipart gem。

http://os.alfajango.com/remotipart/

这是一个示例用法:

http://thechangelog.com/post/7576700785/remotipart-rails-3-ajax-file-uploads-made-easy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2013-03-18
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    相关资源
    最近更新 更多