Railsのrespond_toの使い方を現役エンジニアが解説【初心者向け】

初心者向けにRailsのrespond_toの使い方について現役エンジニアが解説しています。respond_toはHTML形式やその他の形式(フォーマット)として返却したい場合に利用するメソッドです。JSONやXMLのフォーマットで返却してみましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Railsのrespond_toの使い方について解説します。respond_toを使いこなせるようになるとリクエストで指定されたフォーマットに合わせた結果を受け取ることができるようになります。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Railsのrespond_toの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

respond_toとは何か?

Railsのcontroller側の処理でよく記載されている

respond_to do |format| ~ end

という処理ですが、どのような処理を行っているのかをご説明します。

respond_to do |format| ~ endはcontroller内で処理した結果を基本的にはHTML形式で返却したいが特定の呼び出しに対しては明示的にHTML以外の形式で返却したい場合に使用するメソッドです。これをすることで、JSON形式やXML形式など、用途に合わせたフォーマットを取得することができるようになります。

respond_to |format| ~ end 内では format.XXXXという形で返却形式を設定できます。(HTMLで返却したい場合はformat.htmlという形になる。)

respond_toの書き方

respond_toの基本形としては以下のようになります。

respond_to |format|

format.html

end

format.htmlと指定するだけでもcontroller内で設定したインスタンス変数などはview側に渡されますが、format.html {render ‘XXX’} とすることで指定したフォーマットに必要なパラメータのみを渡すこともできます。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

実際のcontrollerへの書き方を簡単に表示します。

class ClientController < Application
def show
@client = { 'last_name' => 'Suzuki', 'old' => '40', 'order_title' => '新規システム開発案件' }

@order_detail = {'title' => @client.order_title, 'start_date' => '2019/11/01', 'end_date' => '2020/02/1'}
respond_to do |format|
format.html
format.json { render json: @client }
format.xml { render xml: @order_detail }
end
end
end

上記のように、HTMLでにはインスタンス変数すべてをjson形式の場合は@clientをxml形式の場合は@order_detailを渡しています。

筆者プロフィール

水野大輝(みずのたいき)

2014年より、某物流会社のシステム開発担当として入社。

未経験ながら、社内システム保守~新規受注システム開発まで携わり、JavaScript Ruby on Rails PostgreSQLなどの経験を積む。現在も、開発案件に携わりながら、日々勉強中。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。