Ruby On Rails:form_for上file_field的示例

时间:2012-10-21 18:53:43

标签: ruby-on-rails file-upload

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

photo.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 %>

photos_controller.rb

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

行失败,因为theres no:file属性。必须先处理它并从:params手动删除。再一次 - 这些标签是否真的有用?

2 个答案:

答案 0 :(得分:4)

我记得我用它来在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,但也不难将其他信息添加到该表单中。

答案 1 :(得分:3)

我将以一个例子说明我如何使用它我觉得它解释得很好,我希望这有帮助

int addNumber(int a, int b){
    int result = a + b;
    return result;
}

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