Rails renderメソッドを使用してjsonを返す

Rails renderメソッドを使用してjsonを返す

Railsでrenderメソッドを使用してjsonを返すサンプルコードを記述してます。railsはwindows10で動作してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.1
  • rails 6.0.3.2

※windows10にrubyをインストールして実行する手順はこちら
※windows10にRuby on Railsをインストールして利用する手順はこちら

Controller作成

まずは、下記のコマンドでcontroller「sample」を作成します。

rails generate controller sample index

json表示

jsonデータを表示させるために、
「app\controller」に 生成された「 sample _controller.rb」を下記のとおりに編集します。

class SampleController < ApplicationController
  def index
    user = {'name' => 'taro', 'age' => 28}
    render :json => user
  end
end

ブラウザから http://プライベートIP or サーバーアドレス:3000/sample/indexにアクセスすると、jsonデータが作成されていることが確認できます。

respond_toメソッド 使用

次に。jsonをhtmlデータとして取得するためにrespond_toメソッドを使用します。

「 sample _controller.rb」を下記のとおりに編集します。

class SampleController < ApplicationController

  def index

    @user = {'name' => 'taro', 'age' => 28}

    respond_to do |format|      
      format.html
      format.json {render :json => @user}    
    end    
  end
end

「app\views\sample」フォルダ配下にある「index.html.erb」を下記の内容で作成します。

<p>
名前 <%= @user["name"] %><br />
年齢 <%= @user["age"] %>
</p>

ブラウザから http://プライベートIP or サーバーアドレス:3000/sample/indexにアクセスすると、jsonデータがhtml形式で表示されていることが確認できます。

また、 http://プライベートIP or サーバーアドレス:3000/sample/index.jsonにアクセスするとjsonデータが取得できます。