Ruby On Rails:form_for 上的 file_field 示例

问题描述 投票:0回答:2

我在 Rails 中遇到文件上传问题。我找到了

file_field :file
助手,可以与
form_for(@some_model)
一起使用。但是,我找不到这种情况的任何用途,因为这些标签用于通过批量分配来创建/编辑某些模型。 AFAIK,不可能将 fileupload 视为典型字段(请参阅 File upload won't work in Ruby on Rails 3 using Multipart Form )。在这种情况下,需要对上传的文件进行手动操作。那么,为什么有人想要将文件上传作为模型编辑的一部分呢?

照片.rb

   class Photo < ActiveRecord::Base
       attr_accessible :name, :filename,
   end

photo_form.html.erb

<%= form_for(@photo, :multipart => true) do |f| %>

  <%= f.label :name %> 
  <%= f.text_field :name %>

  <%= f.file_field :file %>

  <%= f.submit %>

<% end %>

照片控制器.rb

def create
    @photo = Photo.new(params[:photo])

上面的行失败,因为没有 :file 属性。必须事先处理并手动将其从

:params
中移除。再说一遍 - 这些标签有实际用途吗?

ruby-on-rails file-upload
2个回答
6
投票

我会给你一个我如何使用它的例子,我认为它已经足够解释了,我希望这会有所帮助

 <%= form_for @item do |f|%>
    <%= f.file_field :photo, accept: 'image/png,image/jpeg'%>
 <% end %>

如果您有任何疑问,请告诉我


5
投票

我记得我用它在Rails中上传了一个xml文件

查看:

<%= form_tag({action: :upload}, multipart: true) do %>
   <%= file_field_tag 'xml_file' %>
   <%= submit_tag 'Submit' %>
<% end %>

控制器:

def upload
    file_data = params[:xml_file]
end

它使用 form_tag,但在该表单中添加其他信息也不难。

© www.soinside.com 2019 - 2024. All rights reserved.