読者です 読者をやめる 読者になる 読者になる

kitak.blog

Kみたいなエンジニアになりたいブログ

ActionController::APIを継承したコントローラで暗黙的にテンプレートの描画をおこなう術

こんにちは。バジルと海鮮の和物をたべました、きたけーです。

ActionController::APIを継承したコントローラで暗黙的にテンプレートの描画をおこなう方法を知ったのでメモ(具体的にどこで必要になったかというとJSONを生成する手段をActiveModelSerializersからjbuilderに切り替えたときです)。

通常のRailsアプリ(コントローラについて言うとActionController::Baseを継承している場合)だと必ずしもコントローラのアクション内でrenderメソッドを呼ぶ必要はなく、呼ばない場合、暗黙的にテンプレートを描画してくれます。

これがRailsAPI、ActionController::APIを継承したコントローラのアクションの場合、明示的にrenderメソッドを呼んであげないといけません。

必ずしも明示的に呼ぶ必要がなく、アクションに基づいてテンプレートを描画したい場合は、Rails4だと、コントローラでActionController::ImplicitRenderをincludeすると期待する挙動になります。

include ActionController::ImplicitRender