【結論】
・multipartとは、form_forやform_withにおいて
マルチパートを指定するオプション
・マルチパートの指定は、
画像やCSVなどのファイルを読み込む際に必要で、
「multipart: true」と記述する
・Rails4以降のform_forやform_withでは、
フォーム内に関連付けられた「file_field」がある場合は、
自動的に「multipart: true」が適用されるので、
記述の省略が可能
【目次】
- form_forやform_withのオプションである「multipart」
- 「multipart: true」でマルチパートを認識可能に
- Rails4以降のform_forやform_withでは省略可能に
- 《今日の学習進捗(3年以内に10000時間に向けて)》
【本題】
form_forやform_withのオプションである「multipart」
form_forやform_withのオプションの中には、
「multipart」というものがあります。
これは、マルチパートを指定するオプションです。
マルチパートとは、画像やCSVなどのデータの種類を指します。
もし、このマルチパートの指定をしていないと、
ファイルを読み込んでも、ファイル名をただの文字列と認識してしまい、
ファイルを画像やCSVとして取り込む事が出来ません。
例えば、「image.jpeg」という画像ファイルを取り込んでも、
「image.jpeg」という文字列として認識されてしまいます。
「multipart: true」でマルチパートを認識可能に
画像を画像として、CSVをCSVとして取り込みたい場合は、
「multipart: true」と記述して、マルチパートの指定を行います。
こうする事で、ファイルそのものを正しく読み込む事が可能になります。
Rails4以降のform_forやform_withでは省略可能に
なお、この「multipart: true」ですが、
Rails4以降では省略可能になっています。
下記の様に、関連付けられた「file_field」が存在すれば、
自動的に「multipart: true」が適用されます。
<%= form_with url: import_csv_path, local: true do |f| %> <%= f.file_field :file %> <%= f.submit t('common.button.import') %> <% end %>
なお、下記の様に「file_field」が関連付けられていない場合(f.が無い)や、
そもそも「file_field」が無い場合には、「multipart: true」を設定する必要があります。
<%= form_with url: import_csv_path, local: true, multipart: true do %> <%= file_field_tag :file %> <%= submit_tag t('common.button.import') %> <% end %>
《今日の学習進捗(3年以内に10000時間に向けて)》
学習開始からの期間 :125日
今日までの合計時間:1193h
一日あたりの平均学習時間:9.6h
今日までに到達すべき目標時間:1142h
目標との解離:51h
「10,000時間」まで、
残り・・・「8807時間!」