表格带有enctype =' multipart / form-data'导致脚本标题过早结束'错误

时间:2015-11-24 16:34:24

标签: html ruby-on-rails forms apache passenger

我的Rails应用程序上的用户必须在创建新对象时附加XML文件。此操作在开发(Windows)中工作正常,但在生产(Unix)中会引发以下错误。

  

脚本标题的提前结束:namespace,referer:X.X.X.X / namespace / objects / new

其中X.X.X.X是IP地址。

我已确定永远不会达到控制器操作,并且在提交表单后会出现此错误。我正在使用Rails' form_for标记,如下所示:

<%= form_for @object, url: new_object_path, html: { class: 'form-horizontal' } do |form| %>
    <%= render partial: 'form', locals: { form: form }  %>
<% end %>

表单部分有此文件上传字段:

<%= form.file_field :xml, accept: '.xml', required: true %>

这将生成以下HTML:

<form accept-charset="UTF-8" action="/namespace/objects" class="form-horizontal" enctype="multipart/form-data" id="new_object" method="post">
     ...
     <input accept=".xml" id="object_xml" name="object[xml]" required="required" type="file">
     ...
</form>

对我来说,这看起来像是一个非常合理的形式,但它却抛出了这个奇怪的错误。如果我删除enctype="multipart/form-data",则错误消失并且调用控制器操作!这会产生另一个问题,即控制器操作只接收文件名而不是上传的文件本身,但是,至少我们现在正在执行控制器操作,并且我已经确定了问题。

所以我的问题是:为什么这个看似合理的,自动生成的Rails表单及其enctype字段会导致抛出这个(极其模糊和无用的)错误?

这是我们正在使用的软件。

  • Phusion Passenger 4.0.41
  • Apache / 2.2.15(Unix)
  • Red Hat Enterprise Linux Server 6.2
  • Chef 10.24.0
  • Ruby 1.9.3
  • Rails 4.1.4
  • JRuby 1.7.16

0 个答案:

没有答案