0
0

More than 1 year has passed since last update.

[Rails]renderメソッドとは?

Posted at

初めに

なぜこの記事を書きたかったのか

最近やっとrenderで気づいたことがあったので言語化して記憶の定着のために書きたい!

環境

・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2

記事の目次

1)どんなことができるのか
2)どうやってつかうのか
3)オプション
4)自分が混乱していたこと
5)最後に

どんなことができるのか

renderメソッドで指定したviewファイルへ移動もしくは配置することができる!

renderメソッドはapp/viewsを起点としてパスを渡すと、渡したパスを出力してくれる!

(例えば)

1)このQiitaのページの上の緑色の部分を各viewファイルに一回一回コードを書くよりrenderを使えば、renderを使うことで一発で配置することができる!
2)DBへデータを追加保存するcreateアクションをしたあとの処理でrenderを使えば指定したviewへ遷移が可能になる。

どうやってつかうのか(renderで指定したファイルによって使い方が変わるから注意!)

(同じフォルダーのファイルを配置したい場合→indexファイルにtopファイルを配置したい)

<%= render "ファイル名" %>

samplerender2.png

(1)配置したいファイルの作成

 samplerender3.png

(2)配置したい場所にrenderを使う。

ssamplerender.png

(別フォルダーのファイルを配置したい場合→indexファイルにheaderファイルを配置したい)

<%= render "フォルダー名/ファイル名 %>  もしくは <%= render partial: "フォルダー名/ファイル名" %>

samplepartialrender.png

(1)配置したいファイルの作成

partialrendersample1.png

(2)配置したい場所にrenderを使う。

partialrendersample2.png

(オプション)別のコントローラー配下にあるviewを出力してくれるオプション

<%= render template: "フォルダー名/ファイル名" %>

sampletemplaterender2.png

1)別controllerにファイルを用意する。

sampletemplaterender.png

(2)配置したい場所にrenderを使う。

sampletemplaterender3.png

(オプション)別のアプリケーション配下にあるviewを出力してくれるオプション

例:furimaアプリケーションに別のアプリケーション(sample_app)のindex.html.erbを配置したい

<%= render  file "u/apps/別のアプリケーション名/現在のアプリケーション/app/views/コントローラー名/配置したいviewのファイル名" %>
<%= render file: "u/apps/sample_app/current/app/views/products/index" %>

(オプション)アクションを出力したいとき

<%=  render action: "アクション名" %>

自分が混乱していたこと

viewでrenderを使うときはview間の移動ができる、controllerでrenderを使うときはcontroller間で設定したアクションを使うことができると勘違いしてしまってた。

アクションを使いたい場合はオプションをつけないと使えない!
rendersample.png

最後に

使う場所によってrenderの機能が変わると考えてしまい、思ったとおりに動いてくれない理解できないと考えることを避けてしまったけど、アウトプットできる場所があると自分への理解の手助けになるからいいなぁって思った!

ココまで読んでくださいましてありがとうございます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0