0

这是我的观点:

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

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

谢谢。

4

1 回答 1

0

出于安全原因,浏览器不允许通过 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

于 2012-11-30T17:16:31.910 回答