Ruby on Railsのコントローラのrender
メソッドの使い方を説明します。render
はViewの表示の制御を行うためのメソッドです。
🍄 ビューの表示
renderを省略する
Railsのコントローラでrenderを省略すると「app/views/コントローラ名/アクション名.html.erb
」を使います。
# app/controllers/articles_controller.rb |
他のアクションのビューを表示する
render アクション名
で同じコントローラ内の別のアクションのビューを表示できます。
# newアクションのviewを表示 |
ビューのパスを指定して表示
ビューのパスを指定して表示することもできます。
# app/views/statics/home.html.erb を表示 |
🏀 JSONを返す
render
にjson
オプションを付けるとJSONとしてレスポンスを返します。指定したオブジェクトにto_json
オブジェクトがあれば、自動でJSONに返却します。
def index |
出力内容の簡単な制御は「as_jsonメソッド」を活用するとはかどります。より複雑なjsonの出力フォーマットの指定はRailsに標準で組み込まれているRubyGem「jbuilder」がお勧めです。
🐯 文字列を返す
render
にplain
オプションを指定することで文字列を直接表示できます。(ビューを省略できます)
render plain: 'Hello, Ruby world!' |
😎 ステータスコードのみ返す
APIなどでステータスコードのみ伝える場合はhead
メソッドを使います。
# リクエストが正常に処理された |
🐞 Viewの表示を文字列として取得する
ビューをrender
した結果を文字列として取得する場合は、render_to_string
メソッドを使います。
puts render_to_string action: :index |