【Rails】renderメソッドって何ができるの?詳しく解説

Railsのrenderメソッドで出来ることまとめ

くるみ

renderメソッドってちょくちょく使うけど結局何ができるん?
ということで今回は

  • renderメソッドでできることを大まかに思い出したい

という方に向けてRailsの「renderメソッドで出来ること」をまとめました。

初学者の備忘録ゆえ至らない点もあると思いますが参考になれば幸いです⸝⸝- ̫ -⸝⸝

Railsのrenderメソッドで出来ること

テンプレート関連

違うアクションのテンプレートを呼ぶ

render action: "show"

オプションでactionを指定することによって違うアクションのテンプレートを呼ぶことができます。

上の例でいうと、本来ならばfoods#indexアクションが呼び出すテンプレートはfoods/index.html.erbですが、今回はfoods/show.html.erbになります。

render "show"

オプションを省略することもできます。

違うフォルダにあるテンプレートを呼ぶ

render template: "meats/show"

オプションでtemplateを指定することによって違うフォルダ(コントローラー)にあるテンプレートを呼ぶことができます。

上の例でいうと、今回はmeats/show.html.erbになります。

render "foods/show"

オプションを省略することも。

違うアプリのテンプレートを呼ぶ

render file: "(絶対パス)"

オプションでfileを指定することでアプリの外部のテンプレートを呼ぶことができます。

テンプレートは絶対パスで指定してあげるカタチで。

render "(絶対パス)"

オプションを省略することも。

出力関連

文字列をそのまま出力する

render plain: "<h2>黒毛和牛</h2>"

オプションでplainを指定することで文字列をそのまま出力することができます。

ブログ主

文字列にタグを含めてもタグとはみなされないんだね

HTML要素を出力する

render html: "<h2>黒毛和牛</h2>".html_safe

オプションでhtmlを指定することでHTMLタグを出力することができます。

HTMLタグを出力するときは「html.safe」を使うのを忘れずにだね

くるみ

erbのコードを出力する

render inline: "<h2><%= '黒毛' + '和牛' %></h2>"

オプションでinlineを指定することでerbでの実行結果を出力することができます。

JSON形式で出力する

@foods=Food.all
render json: @foods

オプションでjsonを指定することでJSON形式で出力することができます。

上の例でいうとfoodsテーブルのリレーションオブジェクトを出力してます。

XML形式で出力する

@foods=Food.all
render xml: @foods

オプションでxmlを指定することでXML形式で出力することができます。

上の例でいうとfoodsテーブルのリレーションオブジェクトを出力してます。

gem 'activemodel-serializers-xml'
$ bundle install

ブログ主

Rails5の場合は上のgemをインストールする必要があるよ

renderメソッドのオプション一覧

オプション概要
action違うアクションのテンプレートを呼ぶ
template違うフォルダ(コントローラー)にあるテンプレートを呼ぶ
fileアプリの外部のテンプレートを呼ぶ
plain文字列をそのまま出力する
htmlHTMLタグを出力する
inlineerbでの実行結果を出力する
jsonJSON形式で出力する
xmlXML形式で出力する

まとめ

以上、Railsのrenderメソッドで出来ることまとめでした。

他にも細かいものはあると思いますが、基本的なのはこれぐらいなはず…

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

コメントを残す

この記事を書いた人
おはようポテトのプロフィール画像
おはようポテト

22年4月から自社開発企業のWebエンジニアとして働く大学生。このサイトでは主にプログラミングやWordPressカスタマイズについて発信しています。他に運営しているのは宅配冷凍弁当の特化ブログなど。お問い合わせはこちらよりどうぞ。