使用form_tag在Rails中上传文件

时间:2015-12-14 11:43:33

标签: ruby-on-rails ruby

我想在Rails中进行简单的文件上传。

我的模板:

<%= form_tag(controller: "my_controller", action: "change_profile_picture", multipart: true) do %>
   <div class="field">
     <%= label_tag :file %>
     <%= file_field_tag :file %>
   </div>
   <div class="actions">
      <%= submit_tag 'Submit' %>
   </div>
<% end %>

我的经纪人:

def change_profile_picture
  profile_picture = params[:file]
  File.open(Rails.root.join('public', 'uploads', profile_picture.original_filename), 'wb') do |file|
     file.write(profile_picture.read)
  end
  redirect_to :test, params: { profile_picture: params[:file] }
end

文件打开序列刚刚从rails教程中获取。

我的问题是,如果我检查,检查类和其他所有params [:file]它是一个String,并且inspect只显示字符串。示例:“my_picture.jpg”。

输入没有任何original_filename或文件应该具有的任何其他属性。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

尝试

form_tag({controller: "my_controller", action: "change_profile_picture"}, multipart: true)