Rails Controllerのrenderメソッドレシピ集


Ruby on Railsのコントローラのrenderメソッドの使い方を説明します。renderはViewの表示の制御を行うためのメソッドです。

🐝 ビューの表示

renderを省略する

Railsのコントローラでrenderを省略すると「app/views/コントローラ名/アクション名.html.erb」を使います。

# app/controllers/articles_controller.rb
# GET /articles
# app/views/コントローラ名/index.html.erb が呼ばれます
def index
@articles = Article.all
end

他のアクションのビューを表示する

render アクション名で同じコントローラ内の別のアクションのビューを表示できます。

# newアクションのviewを表示
render :new

ビューのパスを指定して表示

ビューのパスを指定して表示することもできます。

# app/views/statics/home.html.erb を表示
render template "static/home"

🎂 JSONを返す

renderjsonオプションを付けるとJSONとしてレスポンスを返します。指定したオブジェクトにto_jsonオブジェクトがあれば、自動でJSONに返却します。

def index
@articles = Article.all
render json: @articles
end

出力内容の簡単な制御は「as_jsonメソッド」を活用するとはかどります。より複雑なjsonの出力フォーマットの指定はRailsに標準で組み込まれているRubyGem「jbuilder」がお勧めです。

👽 文字列を返す

renderplainオプションを指定することで文字列を直接表示できます。(ビューを省略できます)

render plain: 'Hello, Ruby world!'

🏈 ステータスコードのみ返す

APIなどでステータスコードのみ伝える場合はheadメソッドを使います。

# リクエストが正常に処理された
head :ok
# リクエエストが不正
head :bad_request

🐮 Viewの表示を文字列として取得する

ビューをrenderした結果を文字列として取得する場合は、render_to_stringメソッドを使います。

puts render_to_string action: :index

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)