为form_for指定":html => {:multipart => true}"是否正确?

rdn*_*man 2 ruby rack ruby-on-rails multipartform-data form-for

我们正在运行Rails 3.2.19和Ruby 2.1.2.

我们有一个传统的代码行(实际上,不止一行,但这一行特别值得关注)

form_for [@commentable, @comment], :html => { :multipart => true, :class => "lightbox_form"} do |f|

表格数据可以包括或不包括由用户自行决定的上传文件.

SO中的许多示例都指的是指定:multipart设置,但后来我在Form_for中看到了这个答案:multipart => true吐出然后查看http://guides.rubyonrails.org/v3.2.19/form_helpers上的文档. html#uploaded-files,我看到它不应该是必要的(除非使用form_tag).我也在https://github.com/rails/rails/issues/10176上看到这个讨论,这增加了我的困惑.

我问的部分是因为我们在Rack中遇到EOF错误(没有内容通过多部分解析器; 如果你对这些细节感兴趣,请参阅Rack throw EOFError(错误内容正文)).

我们的代码可能以前在早期版本的Rails中运行时可能是必要的(因此可能只是一个保留).但是考虑到包含SO的所有其他示例:multipart,我想在删除之前更好地了解是否:multipart需要或何时需要,form_for以及我可能遇到的副作用.

ele*_*aut 7

这不是对Rails 3.1要求,后来,只要你使用form_for具有file_field这样的:

<%= form_for @person do |f| %>
  <%= f.file_field :picture %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这不起作用:

<%= form_for @person do |f| %>
  <%= file_field_tag 'person[picture]' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

您可以轻松验证它是否正常工作.检查生成的HTML并enctype="multipart/form-data"在表单标记上查找属性.除了设置编码类型之外,Rails没有任何魔力,所以如果属性存在,那么你就是好的.