使用form_tag在Rails中上传文件

mag*_*dae 1 ruby ruby-on-rails

我想在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 %>
Run Code Online (Sandbox Code Playgroud)

我的处理程序:

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
Run Code Online (Sandbox Code Playgroud)

文件打开序列只是从Rails教程中获取的。

我的问题是,如果我进行检查,请检查类以及params [:file]上的所有其他内容,它是一个字符串,而检查仅向我显示了该字符串。例如:“ my_picture.jpg”。

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

任何的想法?

eug*_*gen 6

尝试

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