ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

Ruby on RailsのViewでPartialを使う方法

RailsのPartialの使い方についてです。 Partialとはビューで部分的にテンプレートを適用する、アレです。

Partialの使い方

テンプレートを呼ぶ

たとえば_foo.html.erbというテンプレートを呼ぶ場合、以下のように書きます。

<%= render partial: 'foo' %>

テンプレートに値を渡す

上記に加えて、テンプレートに値を渡す場合、以下のように書きます。 以下は、fooという変数を渡す場合の例です。

<%= render partial: 'foo', locals: { foo: 'foo' } %>

テンプレートからのインスタンス変数の参照について

テンプレートからは、インスタンス変数(@usersなど)を参照しない方がいい、という考えを見かけました。

  • テンプレート(show.html.erb)がインスタンス変数を参照していないので、テンプレートを描画するためにコントローラで何を用意すべきか明らかでない
  • 部分テンプレート(_header.html.erb)がインスタンス変数を介して、呼び出し元のテンプレートだけでなくコントローラとも結びついているので、再利用性が低い

私もこの考えに同意できるので、できるだけlocals: { ... }で値を渡すようにしようと思います。

おわりに

今日は記事を書きすぎて、書いてる途中タイポがだいぶ多くなりました。。。