我的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字段会导致抛出这个(极其模糊和无用的)错误?
这是我们正在使用的软件。