2018年の更新
以下に書かれていることはすべて当てはまりますが、Rails 5.2にはactive_storage
、S3(または他のクラウドストレージサービス)への直接アップロード、画像変換などを可能にするが含まれています。Railsガイドを確認して、ニーズに合ったものを自分で決定する必要があります。
ファイルのアップロードを非常にうまく解決するgemはたくさんありますが(リストについてはhttps://www.ruby-toolbox.com/categories/rails_file_uploadsを参照)、railsには独自のソリューションを簡単に展開できるヘルパーが組み込まれています。
フォームで-formヘルパーを使用するfile_field
と、railsがアップロードを処理します。
<%= form_for @person do |f| %>
<%= f.file_field :picture %>
<% end %>
次のように、コントローラでアップロードされたファイルにアクセスできます。
uploaded_io = params[:person][:picture]
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
達成したいことの複雑さにもよりますが、ファイルのアップロード/ダウンロードを簡単に行うにはこれで十分です。この例は、Railsガイドから抜粋したものです。詳細については、http://guides.rubyonrails.org/form_helpers.html#uploading-filesにアクセスしてください。