lulu

【Rails】respond_toを利用してformatごとに、htmlとjsonを出し分ける方法

やること

respond_toを使って、formatによってjsonやhtml,xmlなどの形式を出し分ける

ver

  • ruby 2.5.1
  • Rails 6.0.3

実装

users_controller

class UsersController < ApplicationController
  def show
    respond_to do |format|
      format.html
      format.json { render json: User.first }
    end
  end
end

結果

htmlフォーマットでエンドポイントにアクセス

localhost:3000/users/1 にアクセス →htmlが表示される

jsonフォーマットでエンドポイントにアクセス

localhost:3000/users/1.json にアクセス →json形式でresponseを得られる

所感

webアプリケーションはhtmlで表示し、ネイティブアプリからのアクセスではjsonを返すなどの実装に使えそうですね!