機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

Rails 5 でJSONとしてVIEWを出力する

プログラミング

通常、RailsならVIEW.erbに書いたテキストに、テンプレートのHTMLが付加される感じになりますが、
これをJSONやXMLなどフォーマットを指定して、REST APIなどとして利用できるようにすることができます。

こんな感じで。

respond_to do |format|
            format.html

                @json=%({"origin":#{@origin_addresses.to_json},"dest":#{@destination_addresses.to_json},"km":#{@km.to_json}})

            format.json {render :json => @json}
end

respond_toはやってもやらなくてもいいのですが…
説明しておくと

respond_toを使うと、通常の ./page にアクセスされた場合には show.html.erb (このアクションメソッドが”show”だとして) が参照され、 ./page.json と、明示的に拡張子でjsonを要求された場合に、format.jsonで指定した、@json 変数の中身をjsonとして参照し、そのまま出力する、というようなことができます。

なので…API専用として使うだけっていうなら、わざわざrespond_toをする必要はないのですが。一応。

to_jsonは、変数をJSONとしてエスケープしてくれます。似たようなのでescape_Javascript(?)がありますが、こっち使ったほうがいいみたいです。

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

Ubuntu 16.04 Rails 5にpostgresSQLをセットアップ
RailsのpostgreSQLにローカルネットワーク(LAN/外部)から接続したい
Rails 5 現在のビューの絶対パス/相対パスを出力
Rails 5 Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Rails Ahoy
Railsで挫折しないためのRailsの学習の進め方
Rails ポート3000以外でサーバーを実行`rails s`したい


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu