0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

部分テンプレート内の変数利用

Last updated at Posted at 2021-04-21

1.呼び出し1

###renderメソッド:指定したテンプレートを呼び出す時に使うメソッド

重要
部分テンプレート名は_formとアンダーバーが付いていますが、呼び出す際は_は付けません。
メソッド呼び出し先
render 'ファイル名'
render :アクション名
render partial: 'ファイル名'

(注意)renderメソッドを記述したビューファイルと違うフォルダ内の部分テンプレートを呼び出すときは hoges/hogeのようにどのフォルダの部分テンプレートを使用しているかを記述する必要があります。

ビューファイル -->
render partial: 'hoges/hoge'
下の例だと_right_content.html.erbはこのコードを記述しているindex.html.erbと同じフォルダにあるのでそのままファイル名を記述すれば呼び出すことができます。

参考:Pikawakaさん :「【Rails】部分テンプレートの使い方を徹底解説!」

https://pikawaka.com/rails/partial_template

部分テンプレート上での変数の呼び出し

オプション名 働き
localsオプション localsオプションを使うと部分テンプレート内で使う変数の定義
viewfile
#定義方法
<%= render partial: 'ファイル名', locals: { '部分テンプレート内で使う変数': '変数に入れる値' } %>

#使用例
<%= render partial: 'hoge', locals: { hoge: 'こんにちは' } %>

重要

localsオプションを使った場合はpartialは省略できません。
partialを省略して書きたければ必ずlocalsオプションも省略しないといけないので注意しましょう。
<%= render 'hoge', hoge: hoge %>

変数を複数定義

viewfile
<%= render partial: 'hoge', locals: { name: "前田", adress: "兵庫県神戸市", age: 36 } %>
view
<P>私の名前は<%= name %>です</p>
<P>私は<%= adress %>在住です</p>
<P>年齢は<%= age %>です</p>
表示
私の名前は前田です。
私は兵庫県神戸市在住です。
年齢は36です。

1.呼び出し2

オプション名 働き
collectionオプション ①collectionオプションを使用するとcollectionオプションに指定した変数の要素の分だけ部分テンプレートが繰り返し表示されます。そうすると自動で一つ一つの要素が取り出され部分テンプレートに渡されて繰り返し表示されるという流れになります。 ②collectionオプションを使用する時はpartial:を記述しないとエラーになるので気をつけましょう。
ビューファイル
<%= render partial: 'hoge', collection: 繰り返し表示する要素が入っているインスタンス %>

重要

部分テンプレート内で使う変数を変更する場合
collectionオプションを使用した場合、部分テンプレート内で使用する変数はオプションで指定した変数が@hogesであったらその単数形のhogeになります。
ビューファイル
<%= render partial: 'hoge', collection: @hoges, as: "fuga" %>
0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?