1. ホーム
  2. ruby-on-rails

レンダーパーシャル :object vs :locals

2023-10-24 06:40:37

質問

<%= render :partial => 'partial/path', :locals => {:xyz => 'abc'} %>

<%= render :partial => 'partial/path', :object => @some_object %>

最初の方は、ローカル変数に xyz という名前のローカル変数をパーシャルで使用できるようにし、2番目のものは object という名前のローカル変数をパーシャルで使用できるようにするものです。では、その違いは何でしょうか?(他に locals では複数の変数が使えます)

どのように解決するのですか?

2番目のケースで :object を使用すると、デフォルトでパーシャルと同じ名前の変数が定義されます。 もし私のパーシャルテンプレートが _user.html.erb という名前であれば、テンプレート内に "user" という名前のローカル変数が定義されることになります。

as => "other_name"で別の変数名を指定することができます。

これについては、こちらのドキュメントを参照してください。 http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html はこちらです。 http://apidock.com/rails/ActionView/PartialRenderer

...そして古いRails(バージョン <= v3.09)用。 http://apidock.com/rails/ActionView/Partials