このチップは、ファイルのアップロードです。
ファイルをアップロードしサーバー側に保存する。
ブラウザのファイルフィールドで選択されたファイルがブラウザから送られてきます。 そのファイルをRailsが受け取ってくれるので、名前を付けてディレクトリに保存するわけです。
それだけでは何なので、javascriptで拡張子のバリデートをしておきましょう。 それともう一つ、Bootstrapでカッコいいファイル選択ボタンを表示させてみましょう。
View
form_for
にactionを指定し、html: {multipart: true, method: :post}
をつけ、file_field_tag
でファイルフィールドを作成します。
bootstrapを使わない時
ではjavascriptで拡張子のバリデートをしましょう。
Bootstrapで装飾する時
Bootstrap File Inputを使うとクール!
ファイルを選択する前
ファイルを選択した時(Excelファイルのアップロードにこのプレビューはいらないですが)
form_for
部分は先ほどど同じですがscriptタグ内に
のような感じで記述するだけです。簡単!!しかもこれだけでバリデートもしてくれます。 バリデート画面
Controller
params について
params[:パラメータ名]
は、GETやPOSTで送られてきた値を取得するのに使われますが、それ以外にparams[:controller]
やparams[:action]
で、コントローラ名やアクション名も取得できます。
また、ここで使用しているようにフォームからアップロードされたファイルの取得もしてくれます。その場合、Railsが受け取るのはTempfile
オブジェクトで、以下のメソッドを使うことができます。
params[:パラメータ名].original_filename
← ファイル名の取得params[:パラメータ名].content_type
← コンテンツタイプの取得params[:パラメータ名].size
← ファイルのサイズの取得params[:パラメータ名].read
← ファイル本体の読み込みparams[:パラメータ名].path
← ファイル本体の一時保存先のパス(OSのテンプディレクトリ、例:/tmp/foo.24722.0)
基本の使い方は以下のようになります。 保存するディレクトリを指定し(もしなければ作成し)て、元のファイル名を変更せずにそのまま保存します。
なんてシンプル。さすがRailsですね。