【RubyOnRails】send_dataでjsonをダウンロードする

niffy
2022-08-26
niffy
2022-08-26

はじめに

こんにちは!
今回は、railsのsend_dataを使用してjsonファイルをダウンロードできる機能を実装したので、復習として記録しておきたいと思います!

実装

まず、controllerにdownload用のメソッドを用意します。

sample_controller
```
//jsonをダウンロード
def download_json
end
```
用意したメソッドにルーティングもしておきましょう。

routes.rb
```
get 'sample/download_json' => 'sample#download_json'
```

用意できたら、中身を実装してみましょう。
```
require 'json'

def download_json
 //jsonを生成 json = JSON.generate({
  name: params[:name]
  prefecture: params[:prefecture]
 })
 send_data json, //データを指定
                 :filename => name + '.json', //ファイル名を指定
                 :type => 'application/json', //ファイルタイプを指定
                 :disposition => 'attachment' //ダウンロードするように指定
end ```
こちらを実装して
sample/download_json?name=niffy&prefecture=fukuoka
を叩くと、パラメーターを整形したjsonファイルが取ってこれるはずです!
send_dataに関する引数や他の使用法は下記ドキュメントに乗っていますので、参考にしてみてください。
https://railsdoc.com/page/send_data